diff --git a/aris_random_additions.mcreator b/aris_random_additions.mcreator index 0b0401f..2a97a4b 100644 --- a/aris_random_additions.mcreator +++ b/aris_random_additions.mcreator @@ -3899,6 +3899,67 @@ ] }, "path": "~/Other" + }, + { + "name": "Ari", + "type": "livingentity", + "compiles": true, + "locked_code": false, + "registry_name": "ari", + "metadata": { + "files": [ + "src/main/resources/assets/aris_random_additions/models/item/ari_spawn_egg.json", + "src/main/java/net/mcreator/arisrandomadditions/client/renderer/AriRenderer.java", + "src/main/java/net/mcreator/arisrandomadditions/entity/AriEntity.java", + "src/main/resources/data/aris_random_additions/forge/biome_modifier/ari_biome_modifier.json" + ] + }, + "path": "~/Other" + }, + { + "name": "AriSpawnEggRecipe", + "type": "recipe", + "compiles": true, + "locked_code": false, + "registry_name": "ari_spawn_egg_recipe", + "metadata": { + "files": [ + "src/main/resources/data/aris_random_additions/recipes/ari_spawn_egg_recipe.json" + ] + }, + "path": "~/SpawnEggs" + }, + { + "name": "FoxSpawnEgg", + "type": "recipe", + "compiles": true, + "locked_code": false, + "registry_name": "fox_spawn_egg", + "metadata": { + "files": [ + "src/main/resources/data/aris_random_additions/recipes/fox_spawn_egg.json" + ] + }, + "path": "~/SpawnEggs" + }, + { + "name": "AriOnInitialEntitySpawn", + "type": "procedure", + "compiles": true, + "locked_code": false, + "registry_name": "ari_on_initial_entity_spawn", + "metadata": { + "files": [ + "src/main/java/net/mcreator/arisrandomadditions/procedures/AriOnInitialEntitySpawnProcedure.java" + ], + "dependencies": [ + { + "name": "entity", + "type": "entity" + } + ] + }, + "path": "~/Other" } ], "variable_elements": [], @@ -4136,6 +4197,7 @@ "effect.aris_random_additions.summoned_entity_effect": "Summoned Entity", "item.nims_random_bullshit.orichalcum": "Orichalcum", "advancements.magic_egg_advancement.descr": "Obtain a Magic Egg", + "entity.aris_random_additions.ari": "Ari", "item.nims_random_bullshit.night_vision_goggles_helmet": "Night Vision Goggles", "block.aris_random_additions.orichalcum_ore": "Orichalcum Ore", "item.aris_random_additions.orichalcum_axe": "Orichalcum Axe", @@ -4157,6 +4219,7 @@ "block.aris_random_additions.condensed_condensed_condensed_netherrack": "Condensed Condensed Condensed Netherrack", "advancements.star_wand_advancement.title": "Healius Absorbus!", "advancements.magic_egg_advancement.title": "Core of a Spawner", + "item.aris_random_additions.ari_spawn_egg": "Ari Spawn Egg", "entity.aris_random_additions.tux": "Tux", "item.nims_random_bullshit.orichalcum_pickaxe": "Orichalcum Pickaxe", "item.aris_random_additions.magic_dust": "Magic Dust", @@ -4263,7 +4326,7 @@ "workspaceSettings": { "modid": "aris_random_additions", "modName": "Ari\u0027s Random Additions", - "version": "2.0.1", + "version": "2.0.2", "description": "Random Additions by Ari. Created with MCreator.", "author": "nimsolated, MCreator", "websiteURL": "https://mcreator.net", diff --git a/elements/Ari.mod.json b/elements/Ari.mod.json new file mode 100644 index 0000000..0663002 --- /dev/null +++ b/elements/Ari.mod.json @@ -0,0 +1,173 @@ +{ + "_fv": 73, + "_type": "livingentity", + "definition": { + "mobName": "Ari", + "mobLabel": "Ari", + "mobModelName": "Biped", + "mobModelTexture": "ari.png", + "transparentModelCondition": { + "fixedValue": false + }, + "isShakingCondition": { + "fixedValue": false + }, + "solidBoundingBox": { + "fixedValue": false + }, + "visualScale": { + "fixedValue": 1.0 + }, + "boundingBoxScale": { + "fixedValue": 1.0 + }, + "modelLayers": [], + "animations": [], + "modelWidth": 0.6, + "modelHeight": 1.8, + "modelShadowSize": 0.5, + "mountedYOffset": 0.0, + "hasSpawnEgg": true, + "spawnEggBaseColor": { + "value": -65448, + "falpha": 0.0 + }, + "spawnEggDotColor": { + "value": -1, + "falpha": 0.0 + }, + "creativeTabs": [ + { + "value": "MISC" + } + ], + "isBoss": false, + "bossBarColor": "PINK", + "bossBarType": "PROGRESS", + "equipmentMainHand": { + "value": "CUSTOM:OrichalcumSword" + }, + "equipmentOffHand": { + "value": "" + }, + "equipmentHelmet": { + "value": "" + }, + "equipmentBody": { + "value": "" + }, + "equipmentLeggings": { + "value": "" + }, + "equipmentBoots": { + "value": "" + }, + "mobBehaviourType": "Mob", + "mobCreatureType": "UNDEFINED", + "attackStrength": 3, + "attackKnockback": 0.0, + "knockbackResistance": 0.0, + "movementSpeed": 0.3, + "stepHeight": 0.6, + "armorBaseValue": 3.0, + "trackingRange": 64, + "followRange": 16, + "health": 20, + "xpAmount": 0, + "waterMob": false, + "breatheUnderwater": { + "fixedValue": false + }, + "pushedByFluids": { + "fixedValue": true + }, + "flyingMob": false, + "inventorySize": 9, + "inventoryStackSize": 64, + "disableCollisions": false, + "ridable": false, + "canControlForward": false, + "canControlStrafe": false, + "immuneToFire": false, + "immuneToArrows": false, + "immuneToFallDamage": true, + "immuneToCactus": true, + "immuneToDrowning": false, + "immuneToLightning": false, + "immuneToPotions": false, + "immuneToPlayer": false, + "immuneToExplosion": false, + "immuneToTrident": false, + "immuneToAnvil": false, + "immuneToWither": false, + "immuneToDragonBreath": false, + "mobDrop": { + "value": "CUSTOM:Orichalcum" + }, + "livingSound": { + "value": "block.amethyst_block.chime" + }, + "hurtSound": { + "value": "block.amethyst_block.hit" + }, + "deathSound": { + "value": "block.amethyst_block.break" + }, + "stepSound": { + "value": "block.amethyst_block.step" + }, + "raidCelebrationSound": { + "value": "" + }, + "entityDataEntries": [], + "onInitialSpawn": { + "name": "AriOnInitialEntitySpawn" + }, + "hasAI": true, + "aiBase": "(none)", + "aixml": "1.2FALSEnull,null1FALSEnull,nullCUSTOM:OrichalcumEntityPlayer6null,null1null,nullTRUETRUEEntityMobnull,nullFALSEnull,nullnull,nullnull,null", + "breedable": false, + "tameable": false, + "breedTriggerItems": [], + "ranged": false, + "rangedAttackItem": { + "value": "" + }, + "rangedItemType": "Default item", + "rangedAttackInterval": 20, + "rangedAttackRadius": 10.0, + "spawnThisMob": true, + "doesDespawnWhenIdle": false, + "spawningProbability": 9, + "mobSpawningType": "monster", + "minNumberOfMobsPerGroup": 1, + "maxNumberOfMobsPerGroup": 1, + "restrictionBiomes": [ + { + "value": "cold_beach" + }, + { + "value": "snowy_tundra" + }, + { + "value": "taiga_cold" + }, + { + "value": "cherry_grove" + }, + { + "value": "snowy_slopes" + } + ], + "spawnInDungeons": false, + "raidSpawnsCount": [ + 4, + 3, + 3, + 4, + 4, + 4, + 2 + ] + } +} \ No newline at end of file diff --git a/elements/AriOnInitialEntitySpawn.mod.json b/elements/AriOnInitialEntitySpawn.mod.json new file mode 100644 index 0000000..9e3e461 --- /dev/null +++ b/elements/AriOnInitialEntitySpawn.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 73, + "_type": "procedure", + "definition": { + "procedurexml": "pickedScaleno_ext_triggerlocal:pickedScale0.51.5HEIGHTlocal:pickedScaleWIDTHlocal:pickedScale" + } +} \ No newline at end of file diff --git a/elements/AriSpawnEggRecipe.mod.json b/elements/AriSpawnEggRecipe.mod.json new file mode 100644 index 0000000..044c3ce --- /dev/null +++ b/elements/AriSpawnEggRecipe.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 73, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Blocks.RED_FLOWER#0" + }, + { + "value": "CUSTOM:Orichalcum" + }, + { + "value": "Blocks.RED_FLOWER#0" + }, + { + "value": "CUSTOM:Orichalcum" + }, + { + "value": "Items.FOX_SPAWN_EGG" + }, + { + "value": "CUSTOM:Orichalcum" + }, + { + "value": "Items.SWEET_BERRIES" + }, + { + "value": "CUSTOM:Orichalcum" + }, + { + "value": "Items.SWEET_BERRIES" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Ari.spawn_egg" + }, + "name": "ari_spawn_egg_recipe", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/FoxSpawnEgg.mod.json b/elements/FoxSpawnEgg.mod.json new file mode 100644 index 0000000..c13ad2c --- /dev/null +++ b/elements/FoxSpawnEgg.mod.json @@ -0,0 +1,48 @@ +{ + "_fv": 73, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "recipeRetstackSize": 1, + "group": "", + "cookingBookCategory": "MISC", + "xpReward": 0.0, + "cookingTime": 200, + "craftingBookCategory": "MISC", + "recipeShapeless": false, + "recipeSlots": [ + { + "value": "Items.CHICKEN" + }, + { + "value": "Items.SWEET_BERRIES" + }, + { + "value": "Items.CHICKEN" + }, + { + "value": "Items.SWEET_BERRIES" + }, + { + "value": "CUSTOM:MagicEgg" + }, + { + "value": "Items.SWEET_BERRIES" + }, + { + "value": "Items.RABBIT" + }, + { + "value": "Items.SWEET_BERRIES" + }, + { + "value": "Items.RABBIT" + } + ], + "recipeReturnStack": { + "value": "Items.FOX_SPAWN_EGG" + }, + "name": "fox_spawn_egg", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/src/main/java/net/mcreator/arisrandomadditions/client/renderer/AriRenderer.java b/src/main/java/net/mcreator/arisrandomadditions/client/renderer/AriRenderer.java new file mode 100644 index 0000000..b5c8fea --- /dev/null +++ b/src/main/java/net/mcreator/arisrandomadditions/client/renderer/AriRenderer.java @@ -0,0 +1,23 @@ + +package net.mcreator.arisrandomadditions.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; +import net.minecraft.client.renderer.entity.HumanoidMobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.model.HumanoidModel; + +import net.mcreator.arisrandomadditions.entity.AriEntity; + +public class AriRenderer extends HumanoidMobRenderer> { + public AriRenderer(EntityRendererProvider.Context context) { + super(context, new HumanoidModel(context.bakeLayer(ModelLayers.PLAYER)), 0.5f); + this.addLayer(new HumanoidArmorLayer(this, new HumanoidModel(context.bakeLayer(ModelLayers.PLAYER_INNER_ARMOR)), new HumanoidModel(context.bakeLayer(ModelLayers.PLAYER_OUTER_ARMOR)), context.getModelManager())); + } + + @Override + public ResourceLocation getTextureLocation(AriEntity entity) { + return new ResourceLocation("aris_random_additions:textures/entities/ari.png"); + } +} diff --git a/src/main/java/net/mcreator/arisrandomadditions/entity/AriEntity.java b/src/main/java/net/mcreator/arisrandomadditions/entity/AriEntity.java new file mode 100644 index 0000000..bed8994 --- /dev/null +++ b/src/main/java/net/mcreator/arisrandomadditions/entity/AriEntity.java @@ -0,0 +1,161 @@ + +package net.mcreator.arisrandomadditions.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.TemptGoal; +import net.minecraft.world.entity.ai.goal.RandomStrollGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.damagesource.DamageTypes; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.Difficulty; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.Component; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.BlockPos; + +import net.mcreator.arisrandomadditions.procedures.AriOnInitialEntitySpawnProcedure; +import net.mcreator.arisrandomadditions.init.ArisRandomAdditionsModItems; +import net.mcreator.arisrandomadditions.init.ArisRandomAdditionsModEntities; + +import javax.annotation.Nullable; + +public class AriEntity extends Monster { + public AriEntity(PlayMessages.SpawnEntity packet, Level world) { + this(ArisRandomAdditionsModEntities.ARI.get(), world); + } + + public AriEntity(EntityType type, Level world) { + super(type, world); + setMaxUpStep(0.6f); + xpReward = 0; + setNoAi(false); + setCustomName(Component.literal("Ari")); + setCustomNameVisible(true); + setPersistenceRequired(); + this.setItemSlot(EquipmentSlot.MAINHAND, new ItemStack(ArisRandomAdditionsModItems.ORICHALCUM_SWORD.get())); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.2, false) { + @Override + protected double getAttackReachSqr(LivingEntity entity) { + return this.mob.getBbWidth() * this.mob.getBbWidth() + entity.getBbWidth(); + } + }); + this.goalSelector.addGoal(2, new TemptGoal(this, 1, Ingredient.of(ArisRandomAdditionsModItems.ORICHALCUM.get()), false)); + this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, (float) 6)); + this.goalSelector.addGoal(4, new RandomStrollGoal(this, 1)); + this.targetSelector.addGoal(5, new NearestAttackableTargetGoal(this, Mob.class, true, true)); + this.targetSelector.addGoal(6, new HurtByTargetGoal(this)); + this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); + this.goalSelector.addGoal(8, new FloatGoal(this)); + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getMyRidingOffset() { + return -0.35D; + } + + protected void dropCustomDeathLoot(DamageSource source, int looting, boolean recentlyHitIn) { + super.dropCustomDeathLoot(source, looting, recentlyHitIn); + this.spawnAtLocation(new ItemStack(ArisRandomAdditionsModItems.ORICHALCUM.get())); + } + + @Override + public SoundEvent getAmbientSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("block.amethyst_block.chime")); + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("block.amethyst_block.step")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("block.amethyst_block.hit")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("block.amethyst_block.break")); + } + + @Override + public boolean hurt(DamageSource damagesource, float amount) { + if (damagesource.is(DamageTypes.FALL)) + return false; + if (damagesource.is(DamageTypes.CACTUS)) + return false; + return super.hurt(damagesource, amount); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + AriOnInitialEntitySpawnProcedure.execute(this); + return retval; + } + + public static void init() { + SpawnPlacements.register(ArisRandomAdditionsModEntities.ARI.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, + (entityType, world, reason, pos, random) -> (world.getDifficulty() != Difficulty.PEACEFUL && Monster.isDarkEnoughToSpawn(world, pos, random) && Mob.checkMobSpawnRules(entityType, world, reason, pos, random))); + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 20); + builder = builder.add(Attributes.ARMOR, 3); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModEntities.java b/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModEntities.java index e3cd3e9..0f32a4b 100644 --- a/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModEntities.java +++ b/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModEntities.java @@ -20,6 +20,7 @@ import net.mcreator.arisrandomadditions.entity.TuxEntity; import net.mcreator.arisrandomadditions.entity.TurdProjectileEntity; import net.mcreator.arisrandomadditions.entity.PocketLightningProjectileEntity; import net.mcreator.arisrandomadditions.entity.GhoulEntity; +import net.mcreator.arisrandomadditions.entity.AriEntity; import net.mcreator.arisrandomadditions.ArisRandomAdditionsMod; @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) @@ -36,6 +37,10 @@ public class ArisRandomAdditionsModEntities { .setUpdateInterval(1).sized(0.5f, 0.5f)); public static final RegistryObject> TURD_PROJECTILE = register("turd_projectile", EntityType.Builder.of(TurdProjectileEntity::new, MobCategory.MISC).setCustomClientFactory(TurdProjectileEntity::new).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + public static final RegistryObject> ARI = register("ari", + EntityType.Builder.of(AriEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(AriEntity::new) + + .sized(0.6f, 1.8f)); // Start of user code block custom entities // End of user code block custom entities @@ -48,6 +53,7 @@ public class ArisRandomAdditionsModEntities { event.enqueueWork(() -> { GhoulEntity.init(); TuxEntity.init(); + AriEntity.init(); }); } @@ -55,5 +61,6 @@ public class ArisRandomAdditionsModEntities { public static void registerAttributes(EntityAttributeCreationEvent event) { event.put(GHOUL.get(), GhoulEntity.createAttributes().build()); event.put(TUX.get(), TuxEntity.createAttributes().build()); + event.put(ARI.get(), AriEntity.createAttributes().build()); } } diff --git a/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModEntityRenderers.java b/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModEntityRenderers.java index 43b39e1..71877ce 100644 --- a/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModEntityRenderers.java +++ b/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModEntityRenderers.java @@ -13,6 +13,7 @@ import net.minecraft.client.renderer.entity.ThrownItemRenderer; import net.mcreator.arisrandomadditions.client.renderer.TuxRenderer; import net.mcreator.arisrandomadditions.client.renderer.GhoulRenderer; +import net.mcreator.arisrandomadditions.client.renderer.AriRenderer; @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public class ArisRandomAdditionsModEntityRenderers { @@ -22,5 +23,6 @@ public class ArisRandomAdditionsModEntityRenderers { event.registerEntityRenderer(ArisRandomAdditionsModEntities.TUX.get(), TuxRenderer::new); event.registerEntityRenderer(ArisRandomAdditionsModEntities.POCKET_LIGHTNING_PROJECTILE.get(), ThrownItemRenderer::new); event.registerEntityRenderer(ArisRandomAdditionsModEntities.TURD_PROJECTILE.get(), ThrownItemRenderer::new); + event.registerEntityRenderer(ArisRandomAdditionsModEntities.ARI.get(), AriRenderer::new); } } diff --git a/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModItems.java b/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModItems.java index 5ce9bd1..77b8ff4 100644 --- a/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModItems.java +++ b/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModItems.java @@ -116,6 +116,7 @@ public class ArisRandomAdditionsModItems { public static final RegistryObject RAVE_BLOCK = block(ArisRandomAdditionsModBlocks.RAVE_BLOCK); public static final RegistryObject TURD = REGISTRY.register("turd", () -> new TurdItem()); public static final RegistryObject WAND_OF_DRAINING = REGISTRY.register("wand_of_draining", () -> new WandOfDrainingItem()); + public static final RegistryObject ARI_SPAWN_EGG = REGISTRY.register("ari_spawn_egg", () -> new ForgeSpawnEggItem(ArisRandomAdditionsModEntities.ARI, -65448, -1, new Item.Properties())); // Start of user code block custom items // End of user code block custom items diff --git a/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModTabs.java b/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModTabs.java index f87d093..40c3e44 100644 --- a/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModTabs.java +++ b/src/main/java/net/mcreator/arisrandomadditions/init/ArisRandomAdditionsModTabs.java @@ -75,6 +75,7 @@ public class ArisRandomAdditionsModTabs { } else if (tabData.getTabKey() == CreativeModeTabs.SPAWN_EGGS) { tabData.accept(ArisRandomAdditionsModItems.GHOUL_SPAWN_EGG.get()); tabData.accept(ArisRandomAdditionsModItems.TUX_SPAWN_EGG.get()); + tabData.accept(ArisRandomAdditionsModItems.ARI_SPAWN_EGG.get()); } else if (tabData.getTabKey() == CreativeModeTabs.REDSTONE_BLOCKS) { tabData.accept(ArisRandomAdditionsModBlocks.REDSTONE_BRICKS.get().asItem()); tabData.accept(ArisRandomAdditionsModBlocks.REDSTONE_BRICK_STAIRS.get().asItem()); diff --git a/src/main/java/net/mcreator/arisrandomadditions/procedures/AriOnInitialEntitySpawnProcedure.java b/src/main/java/net/mcreator/arisrandomadditions/procedures/AriOnInitialEntitySpawnProcedure.java new file mode 100644 index 0000000..581cd83 --- /dev/null +++ b/src/main/java/net/mcreator/arisrandomadditions/procedures/AriOnInitialEntitySpawnProcedure.java @@ -0,0 +1,19 @@ +package net.mcreator.arisrandomadditions.procedures; + +import virtuoel.pehkui.api.ScaleTypes; +import virtuoel.pehkui.api.ScaleOperations; + +import net.minecraft.world.entity.Entity; +import net.minecraft.util.RandomSource; +import net.minecraft.util.Mth; + +public class AriOnInitialEntitySpawnProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + double pickedScale = 0; + pickedScale = Mth.nextDouble(RandomSource.create(), 0.5, 1.5); + ScaleTypes.HEIGHT.getScaleData(entity).setTargetScale((float) ScaleOperations.SET.applyAsDouble(ScaleTypes.HEIGHT.getScaleData(entity).getTargetScale(), pickedScale)); + ScaleTypes.WIDTH.getScaleData(entity).setTargetScale((float) ScaleOperations.SET.applyAsDouble(ScaleTypes.WIDTH.getScaleData(entity).getTargetScale(), pickedScale)); + } +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index a2e2ffd..1b43f27 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -4,7 +4,7 @@ license="Academic Free License v3.0" [[mods]] modId="aris_random_additions" -version="2.0.1" +version="2.0.2" displayName="Ari's Random Additions" displayURL="https://mcreator.net" logoFile="logo.png" diff --git a/src/main/resources/assets/aris_random_additions/lang/en_us.json b/src/main/resources/assets/aris_random_additions/lang/en_us.json index 1bdcd8a..762c64e 100644 --- a/src/main/resources/assets/aris_random_additions/lang/en_us.json +++ b/src/main/resources/assets/aris_random_additions/lang/en_us.json @@ -146,6 +146,7 @@ "effect.aris_random_additions.summoned_entity_effect": "Summoned Entity", "item.nims_random_bullshit.orichalcum": "Orichalcum", "advancements.magic_egg_advancement.descr": "Obtain a Magic Egg", + "entity.aris_random_additions.ari": "Ari", "item.nims_random_bullshit.night_vision_goggles_helmet": "Night Vision Goggles", "block.aris_random_additions.orichalcum_ore": "Orichalcum Ore", "item.aris_random_additions.orichalcum_axe": "Orichalcum Axe", @@ -167,6 +168,7 @@ "block.aris_random_additions.condensed_condensed_condensed_netherrack": "Condensed Condensed Condensed Netherrack", "advancements.star_wand_advancement.title": "Healius Absorbus!", "advancements.magic_egg_advancement.title": "Core of a Spawner", + "item.aris_random_additions.ari_spawn_egg": "Ari Spawn Egg", "entity.aris_random_additions.tux": "Tux", "item.nims_random_bullshit.orichalcum_pickaxe": "Orichalcum Pickaxe", "item.aris_random_additions.magic_dust": "Magic Dust", diff --git a/src/main/resources/assets/aris_random_additions/textures/entities/ari.png b/src/main/resources/assets/aris_random_additions/textures/entities/ari.png new file mode 100644 index 0000000..5d990ed Binary files /dev/null and b/src/main/resources/assets/aris_random_additions/textures/entities/ari.png differ diff --git a/src/main/resources/data/aris_random_additions/forge/biome_modifier/ari_biome_modifier.json b/src/main/resources/data/aris_random_additions/forge/biome_modifier/ari_biome_modifier.json new file mode 100644 index 0000000..74a7cae --- /dev/null +++ b/src/main/resources/data/aris_random_additions/forge/biome_modifier/ari_biome_modifier.json @@ -0,0 +1,16 @@ +{ + "type": "forge:add_spawns", + "biomes": [ + "snowy_beach", + "snowy_plains", + "snowy_taiga", + "cherry_grove", + "snowy_slopes" + ], + "spawners": { + "type": "aris_random_additions:ari", + "weight": 9, + "minCount": 1, + "maxCount": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/aris_random_additions/recipes/ari_spawn_egg_recipe.json b/src/main/resources/data/aris_random_additions/recipes/ari_spawn_egg_recipe.json new file mode 100644 index 0000000..5e075c9 --- /dev/null +++ b/src/main/resources/data/aris_random_additions/recipes/ari_spawn_egg_recipe.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aba", + "bcb", + "dbd" + ], + "key": { + "a": { + "item": "minecraft:poppy" + }, + "b": { + "item": "aris_random_additions:orichalcum" + }, + "c": { + "item": "minecraft:fox_spawn_egg" + }, + "d": { + "item": "minecraft:sweet_berries" + } + }, + "result": { + "item": "aris_random_additions:ari_spawn_egg", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/aris_random_additions/recipes/fox_spawn_egg.json b/src/main/resources/data/aris_random_additions/recipes/fox_spawn_egg.json new file mode 100644 index 0000000..663f136 --- /dev/null +++ b/src/main/resources/data/aris_random_additions/recipes/fox_spawn_egg.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "aba", + "bcb", + "dbd" + ], + "key": { + "a": { + "item": "minecraft:chicken" + }, + "b": { + "item": "minecraft:sweet_berries" + }, + "c": { + "item": "aris_random_additions:magic_egg" + }, + "d": { + "item": "minecraft:rabbit" + } + }, + "result": { + "item": "minecraft:fox_spawn_egg", + "count": 1 + } +} \ No newline at end of file