diff --git a/src/main/generated/assets/acesbs/models/item/mote_of_order.json b/src/main/generated/assets/acesbs/models/item/mote_of_order.json new file mode 100644 index 0000000..7b26186 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/mote_of_order.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/mote_of_order" + } +} \ No newline at end of file diff --git a/src/main/java/com/acethewildfire/acesbs/TODO.txt b/src/main/java/com/acethewildfire/acesbs/TODO.txt index 3fdc465..b39c579 100644 --- a/src/main/java/com/acethewildfire/acesbs/TODO.txt +++ b/src/main/java/com/acethewildfire/acesbs/TODO.txt @@ -2,6 +2,11 @@ Resources X Infernal Ashes - Raw End-tropy - Stable End-tropy +- Mote of Order +- Dust of Order +- Ingot of Order +- Ordered Core +- Command Core X Prisma Steel (Stable Entropy + Iron) (Needs recipe) - Chaos Silver (Stable Entropy + Gold) - Fractal Diamond (Stable Entropy + Diamond) @@ -21,7 +26,10 @@ X Bricked Up (Brick + End-tropy) X Infernal Beef (Mob/Ashes + Cooked Beef) - Hyper Stimulants (Hyper Sugar) - Narcan (Stimulants + Entropic Eviscerator) -X Tobacco +O Tobacco (Makes you sick) +- Cigarette (Speed for 5, slow for 5, 30 of jittery) (Acheivements) (Stats) +- Cigarette (Funny) (Blows inordinate amounts of smoke) +- Cigarette (Lemon) (Explodes) Crop X Tobacco @@ -54,6 +62,43 @@ X Prisma Steel (May get a different Ore when mining) - Infernal Diamond (Randomly Smelts Ores) - Endtropium +Order +- Helm of Wisdom + - One passive slot + - Sight (See where others can not) [Night vision + removes blindness and darkness] + - Omnipotence (Let nothing escape your sight) [Struck mobs get glowing for 5 min] + - Intimidate (Warn any would be foes you mean business) [Lowers mob agro distance, endermen do not get upset when you look at them] +- Cuirass of Authority + - One passive slot + - Immunity (Most physical ailments have no effect on you) [Removes poison, weakness, mining fatigue] +- Greaves of Will + - One passive slot + - Immovable (You cannot be moved against your will) [No knockback] + - Unstopable (You cannot be stopped) [No web, slime, soul sand, or honey slow down] +- Sabatons of Dominion + - One passive slot + - Grounded (You always have sure footing) [Removes levitation and ice] + - Arborist (You have an affinity with plants) [Crouch to bone meal] + +- Staff of Supreme Command + - Internal inv + - One active (attack) slot + - Wither (Causes a foe to wither away) [Apply wither and slowness] + - Immolate (Causes foes to sacrifice themselves to you) [Burn enemy, heal player] + - Begone (Removes a foe from your sight) [Send 2000 blocks up] + - Smite (Strike a foe with a bolt of lightning) [Lightning] + - Terrify (Show a foe your true appearance) [Apply weakness, nausea, slowness for a time] + - Grovel (Forces a foe to collapse under your might) [Stop movement and force low pov] + + - Embolden (Imbue an ally with your might) [Apply strength, speed, absorption for a time] + - Satisfy (Bless an ally with a full stomach) [Full food] + - Soothe (Soothe an ally, healing their wounds) [Full health] + - Defend (Protect an ally from injury) [Apply resistance 20 for a time] + - One passive (use) slot + - Collapse (Remove an obstacle from your path) [Break any block] + - Leap (Launch yourself into the air) [Jump ten blocks up] + - Howl (Call your canine allies to battle) [Summon strong wolves] + - Hammers and Excavators of these materials. Weapons diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java index 8cb9945..fc631de 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java @@ -2,6 +2,7 @@ package com.acethewildfire.acesbs.datagen; import com.acethewildfire.acesbs.block.ModBlocks; import com.acethewildfire.acesbs.item.ModItems; +import com.acethewildfire.acesbs.item.PrismaSteelItems; import com.acethewildfire.acesbs.util.ModTags; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; @@ -33,25 +34,25 @@ public class ModItemTagProvider extends FabricTagProvider.ItemTagProvider { getOrCreateTagBuilder(ItemTags.BOW_ENCHANTABLE) .add(ModItems.KAUPEN_BOW); getOrCreateTagBuilder(ItemTags.SWORDS) - .add(ModItems.PRISMA_STEEL_SWORD); + .add(PrismaSteelItems.PRISMA_STEEL_SWORD); getOrCreateTagBuilder(ItemTags.AXES) - .add(ModItems.PRISMA_STEEL_AXE); + .add(PrismaSteelItems.PRISMA_STEEL_AXE); getOrCreateTagBuilder(ItemTags.PICKAXES) - .add(ModItems.PRISMA_STEEL_PICKAXE); + .add(PrismaSteelItems.PRISMA_STEEL_PICKAXE); getOrCreateTagBuilder(ItemTags.SHOVELS) - .add(ModItems.PRISMA_STEEL_SHOVEL); + .add(PrismaSteelItems.PRISMA_STEEL_SHOVEL); getOrCreateTagBuilder(ItemTags.HOES) - .add(ModItems.PRISMA_STEEL_HOE); + .add(PrismaSteelItems.PRISMA_STEEL_HOE); getOrCreateTagBuilder(ItemTags.TRIMMABLE_ARMOR) - .add(ModItems.PRISMA_STEEL_HELMET) - .add(ModItems.PRISMA_STEEL_CHESTPLATE) - .add(ModItems.PRISMA_STEEL_LEGGINGS) - .add(ModItems.PRISMA_STEEL_BOOTS) + .add(PrismaSteelItems.PRISMA_STEEL_HELMET) + .add(PrismaSteelItems.PRISMA_STEEL_CHESTPLATE) + .add(PrismaSteelItems.PRISMA_STEEL_LEGGINGS) + .add(PrismaSteelItems.PRISMA_STEEL_BOOTS) .add(ModItems.BERSERKERS_PAULDRON); getOrCreateTagBuilder(ItemTags.TRIM_MATERIALS) - .add(ModItems.PRISMA_STEEL); + .add(PrismaSteelItems.PRISMA_STEEL); getOrCreateTagBuilder(ItemTags.TRIM_TEMPLATES) - .add(ModItems.PRISMA_SMITHING_TEMPLATE); + .add(PrismaSteelItems.PRISMA_SMITHING_TEMPLATE); getOrCreateTagBuilder(ItemTags.CREEPER_DROP_MUSIC_DISCS) .add(ModItems.CRAB_RAVE_MUSIC_DISC); getOrCreateTagBuilder(ItemTags.LOGS_THAT_BURN) diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModLootTableProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModLootTableProvider.java index fc012ea..50b9e8b 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModLootTableProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModLootTableProvider.java @@ -3,6 +3,7 @@ package com.acethewildfire.acesbs.datagen; import com.acethewildfire.acesbs.block.ModBlocks; import com.acethewildfire.acesbs.block.custom.TobaccoCrop; import com.acethewildfire.acesbs.item.ModItems; +import com.acethewildfire.acesbs.item.PrismaSteelItems; import com.acethewildfire.acesbs.util.ModTags; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricBlockLootTableProvider; @@ -120,7 +121,7 @@ public class ModLootTableProvider extends FabricBlockLootTableProvider { LootPool.Builder defaultPool = LootPool.builder() .rolls(UniformLootNumberProvider.create(minDrops, maxDrops)) .conditionally(InvertedLootCondition.builder(silkTouchCondition)) - .conditionally(InvertedLootCondition.builder(specialToolCondition(ModItems.PRISMA_STEEL_PICKAXE, ModItems.PRISMA_STEEL_HAMMER))) + .conditionally(InvertedLootCondition.builder(specialToolCondition(PrismaSteelItems.PRISMA_STEEL_PICKAXE, PrismaSteelItems.PRISMA_STEEL_HAMMER))) .with(ItemEntry.builder(defaultItem).weight(1)) .apply(ApplyBonusLootFunction.oreDrops(impl.getOrThrow(Enchantments.FORTUNE))) .apply(ExplosionDecayLootFunction.builder()); @@ -134,7 +135,7 @@ public class ModLootTableProvider extends FabricBlockLootTableProvider { LootPool.Builder prismaPool = LootPool.builder() .rolls(UniformLootNumberProvider.create(minDrops, maxDrops)) .conditionally(InvertedLootCondition.builder(silkTouchCondition)) - .conditionally(specialToolCondition(ModItems.PRISMA_STEEL_PICKAXE, ModItems.PRISMA_STEEL_HAMMER)) + .conditionally(specialToolCondition(PrismaSteelItems.PRISMA_STEEL_PICKAXE, PrismaSteelItems.PRISMA_STEEL_HAMMER)) .with(ItemEntry.builder(Items.AIR).weight(360)) .with(ItemEntry.builder(Items.COAL).weight(12)) .with(ItemEntry.builder(Items.RAW_COPPER).weight(10)) diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java index 8fecc32..d3cc019 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java @@ -4,6 +4,7 @@ import com.acethewildfire.acesbs.block.ModBlocks; import com.acethewildfire.acesbs.block.custom.EvilBlock; import com.acethewildfire.acesbs.block.custom.TobaccoCrop; import com.acethewildfire.acesbs.item.ModItems; +import com.acethewildfire.acesbs.item.PrismaSteelItems; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider; import net.minecraft.data.client.*; @@ -81,22 +82,23 @@ public class ModModelProvider extends FabricModelProvider { itemModelGenerator.register(ModItems.ORACLE_LEMON, Models.GENERATED); itemModelGenerator.register(ModItems.GREEN_BRICKS, Models.GENERATED); itemModelGenerator.register(ModItems.INFERNAL_ASHES, Models.GENERATED); + itemModelGenerator.register(ModItems.MOTE_OF_ORDER, Models.GENERATED); // itemModelGenerator.register(ModItems.WAND, Models.HANDHELD_ROD); - itemModelGenerator.register(ModItems.PRISMA_STEEL, Models.GENERATED); - itemModelGenerator.register(ModItems.PRISMA_SMITHING_TEMPLATE, Models.GENERATED); + itemModelGenerator.register(PrismaSteelItems.PRISMA_STEEL, Models.GENERATED); + itemModelGenerator.register(PrismaSteelItems.PRISMA_SMITHING_TEMPLATE, Models.GENERATED); itemModelGenerator.register(ModItems.CRAB_RAVE_MUSIC_DISC, Models.GENERATED); - itemModelGenerator.register(ModItems.PRISMA_STEEL_SWORD, Models.HANDHELD); - itemModelGenerator.register(ModItems.PRISMA_STEEL_PICKAXE, Models.HANDHELD); - itemModelGenerator.register(ModItems.PRISMA_STEEL_HAMMER, Models.HANDHELD); - itemModelGenerator.register(ModItems.PRISMA_STEEL_AXE, Models.HANDHELD); - itemModelGenerator.register(ModItems.PRISMA_STEEL_SHOVEL, Models.HANDHELD); - itemModelGenerator.register(ModItems.PRISMA_STEEL_HOE, Models.HANDHELD); + itemModelGenerator.register(PrismaSteelItems.PRISMA_STEEL_SWORD, Models.HANDHELD); + itemModelGenerator.register(PrismaSteelItems.PRISMA_STEEL_PICKAXE, Models.HANDHELD); + itemModelGenerator.register(PrismaSteelItems.PRISMA_STEEL_HAMMER, Models.HANDHELD); + itemModelGenerator.register(PrismaSteelItems.PRISMA_STEEL_AXE, Models.HANDHELD); + itemModelGenerator.register(PrismaSteelItems.PRISMA_STEEL_SHOVEL, Models.HANDHELD); + itemModelGenerator.register(PrismaSteelItems.PRISMA_STEEL_HOE, Models.HANDHELD); - itemModelGenerator.registerArmor((ArmorItem) ModItems.PRISMA_STEEL_HELMET); - itemModelGenerator.registerArmor((ArmorItem) ModItems.PRISMA_STEEL_CHESTPLATE); - itemModelGenerator.registerArmor((ArmorItem) ModItems.PRISMA_STEEL_LEGGINGS); - itemModelGenerator.registerArmor((ArmorItem) ModItems.PRISMA_STEEL_BOOTS); + itemModelGenerator.registerArmor((ArmorItem) PrismaSteelItems.PRISMA_STEEL_HELMET); + itemModelGenerator.registerArmor((ArmorItem) PrismaSteelItems.PRISMA_STEEL_CHESTPLATE); + itemModelGenerator.registerArmor((ArmorItem) PrismaSteelItems.PRISMA_STEEL_LEGGINGS); + itemModelGenerator.registerArmor((ArmorItem) PrismaSteelItems.PRISMA_STEEL_BOOTS); itemModelGenerator.registerArmor((ArmorItem) ModItems.BERSERKERS_PAULDRON); diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java index bf414ba..5b0759c 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java @@ -3,6 +3,7 @@ package com.acethewildfire.acesbs.datagen; import com.acethewildfire.acesbs.AcesBS; import com.acethewildfire.acesbs.block.ModBlocks; import com.acethewildfire.acesbs.item.ModItems; +import com.acethewildfire.acesbs.item.PrismaSteelItems; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; import net.minecraft.block.Blocks; @@ -37,7 +38,7 @@ public class ModRecipeProvider extends FabricRecipeProvider { // ENDTROPY BLOCKS // offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.BUILDING_BLOCKS, ModItems.RAW_ENTROPY, RecipeCategory.DECORATIONS, ModBlocks.ENDTROPY_BLOCK); // offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.BUILDING_BLOCKS, ModItems.STABLE_ENTROPY, RecipeCategory.DECORATIONS, ModBlocks.STABLE_ENDTROPY_BLOCK); - offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.BUILDING_BLOCKS, ModItems.PRISMA_STEEL, RecipeCategory.DECORATIONS, ModBlocks.PRISMA_STEEL_BLOCK); + offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.BUILDING_BLOCKS, PrismaSteelItems.PRISMA_STEEL, RecipeCategory.DECORATIONS, ModBlocks.PRISMA_STEEL_BLOCK); offerReversibleCompactingRecipes(recipeExporter, RecipeCategory.BUILDING_BLOCKS, ModItems.INFERNAL_ASHES, RecipeCategory.DECORATIONS, ModBlocks.INFERNAL_ASHES_BLOCK); @@ -189,14 +190,14 @@ public class ModRecipeProvider extends FabricRecipeProvider { .criterion(hasItem(ModBlocks.LEMONWOOD_PLANKS), conditionsFromItem(ModBlocks.LEMONWOOD_PLANKS)) .offerTo(recipeExporter); - SwordRecipeJsonBuilder(recipeExporter, ModItems.PRISMA_STEEL_SWORD, ModItems.PRISMA_STEEL, Items.STICK, ModItems.PRISMA_STEEL); - PickaxeRecipeJsonBuilder(recipeExporter, ModItems.PRISMA_STEEL_PICKAXE, ModItems.PRISMA_STEEL, Items.STICK, ModItems.PRISMA_STEEL); - HammerRecipeJsonBuilder(recipeExporter, ModItems.PRISMA_STEEL_HAMMER, ModItems.PRISMA_STEEL, ModBlocks.PRISMA_STEEL_BLOCK, Items.STICK, ModItems.PRISMA_STEEL); - AxeRecipeJsonBuilder(recipeExporter, ModItems.PRISMA_STEEL_AXE, ModItems.PRISMA_STEEL, Items.STICK, ModItems.PRISMA_STEEL); - ShovelRecipeJsonBuilder(recipeExporter, ModItems.PRISMA_STEEL_SHOVEL, ModItems.PRISMA_STEEL, Items.STICK, ModItems.PRISMA_STEEL); - HoeRecipeJsonBuilder(recipeExporter, ModItems.PRISMA_STEEL_HOE, ModItems.PRISMA_STEEL, Items.STICK, ModItems.PRISMA_STEEL); + SwordRecipeJsonBuilder(recipeExporter, PrismaSteelItems.PRISMA_STEEL_SWORD, PrismaSteelItems.PRISMA_STEEL, Items.STICK, PrismaSteelItems.PRISMA_STEEL); + PickaxeRecipeJsonBuilder(recipeExporter, PrismaSteelItems.PRISMA_STEEL_PICKAXE, PrismaSteelItems.PRISMA_STEEL, Items.STICK, PrismaSteelItems.PRISMA_STEEL); + HammerRecipeJsonBuilder(recipeExporter, PrismaSteelItems.PRISMA_STEEL_HAMMER, PrismaSteelItems.PRISMA_STEEL, ModBlocks.PRISMA_STEEL_BLOCK, Items.STICK, PrismaSteelItems.PRISMA_STEEL); + AxeRecipeJsonBuilder(recipeExporter, PrismaSteelItems.PRISMA_STEEL_AXE, PrismaSteelItems.PRISMA_STEEL, Items.STICK, PrismaSteelItems.PRISMA_STEEL); + ShovelRecipeJsonBuilder(recipeExporter, PrismaSteelItems.PRISMA_STEEL_SHOVEL, PrismaSteelItems.PRISMA_STEEL, Items.STICK, PrismaSteelItems.PRISMA_STEEL); + HoeRecipeJsonBuilder(recipeExporter, PrismaSteelItems.PRISMA_STEEL_HOE, PrismaSteelItems.PRISMA_STEEL, Items.STICK, PrismaSteelItems.PRISMA_STEEL); - offerSmithingTrimRecipe(recipeExporter, ModItems.PRISMA_SMITHING_TEMPLATE, Identifier.of(AcesBS.MOD_ID, "prisma")); + offerSmithingTrimRecipe(recipeExporter, PrismaSteelItems.PRISMA_SMITHING_TEMPLATE, Identifier.of(AcesBS.MOD_ID, "prisma")); // For 2+ recipes with the same RESULT use // .offerTo(recipeExporter, Identifier.of(AcesBS.MOD_ID, "output_item_from_input_item")); diff --git a/src/main/java/com/acethewildfire/acesbs/effect/CigaretteEffect.java b/src/main/java/com/acethewildfire/acesbs/effect/CigaretteEffect.java new file mode 100644 index 0000000..0dabb9d --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/effect/CigaretteEffect.java @@ -0,0 +1,44 @@ +package com.acethewildfire.acesbs.effect; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffect; +import net.minecraft.entity.effect.StatusEffectCategory; +import net.minecraft.entity.effect.StatusEffectInstance; + +public class CigaretteEffect extends StatusEffect { + public CigaretteEffect(StatusEffectCategory category, int color) { + super(category, color); + } + + @Override + public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { + StatusEffectInstance effect = entity.getStatusEffect(ModEffects.CIGARETTE); + + if (effect == null) return true; + + // When 1 tick remains, it's about to end + if (effect.getDuration() <= 1 && !entity.getWorld().isClient()) { + + // Apply new effect + entity.addStatusEffect(new StatusEffectInstance( + ModEffects.JITTERY, // second effect + 6000, // duration (10 sec) + 0 // amplifier + )); + } else { + if (!entity.getWorld().isClient()) { + entity.removeStatusEffect(ModEffects.JITTERY); + entity.removeStatusEffect(ModEffects.WITHDRAWAL); + } + } + return true; + } + + @Override + public boolean canApplyUpdateEffect(int duration, int amplifier) { + return true; + } + + +} + diff --git a/src/main/java/com/acethewildfire/acesbs/effect/JitteryEffect.java b/src/main/java/com/acethewildfire/acesbs/effect/JitteryEffect.java new file mode 100644 index 0000000..b272437 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/effect/JitteryEffect.java @@ -0,0 +1,69 @@ +package com.acethewildfire.acesbs.effect; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffect; +import net.minecraft.entity.effect.StatusEffectCategory; +import net.minecraft.entity.effect.StatusEffectInstance; + +import java.util.Random; + +public class JitteryEffect extends StatusEffect { + protected JitteryEffect(StatusEffectCategory category, int color) { + super(category, color); + } + + Random r = new Random(); + int timer = 0; + int maxTimer = 200; + int delay = 200; + int maxDelay = 20; + int times = 2; + + @Override + public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { + StatusEffectInstance effect = entity.getStatusEffect(ModEffects.JITTERY); + if (effect == null) return true; + + if (timer >= maxTimer){ + //Time to do the jitterbug + if (times <= 0){ + timer = 0; + maxTimer = r.nextInt(100, 200); + times = r.nextInt(2,5); + } else if (delay >= maxDelay) { + // Dance + double randomVelocityX = r.nextDouble(-0.3, 0.3); + double randomVelocityZ = r.nextDouble(-0.3, 0.3); + entity.addVelocity(randomVelocityX, 0, randomVelocityZ); + + //Decrement times + times--; + + //Set new delay + delay = 0; + maxDelay = r.nextInt(5, 10); + } else { + delay++; + } + } else { + timer++; + } + + // When 1 tick remains, it's about to end + if (effect.getDuration() == 1 && !entity.getWorld().isClient()) { + + // Apply new effect + entity.addStatusEffect(new StatusEffectInstance( + ModEffects.WITHDRAWAL, // second effect + 12000, // duration + 0 // amplifier + )); + } + return true; + } + + @Override + public boolean canApplyUpdateEffect(int duration, int amplifier) { + return true; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/effect/ModEffects.java b/src/main/java/com/acethewildfire/acesbs/effect/ModEffects.java index 7fa9823..d2451c0 100644 --- a/src/main/java/com/acethewildfire/acesbs/effect/ModEffects.java +++ b/src/main/java/com/acethewildfire/acesbs/effect/ModEffects.java @@ -1,7 +1,6 @@ package com.acethewildfire.acesbs.effect; import com.acethewildfire.acesbs.AcesBS; -import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.effect.StatusEffect; @@ -27,6 +26,19 @@ public class ModEffects { public static final RegistryEntry BRICKED_UP = registerStatusEffect("bricked_up", new BrickedUpEffect(StatusEffectCategory.NEUTRAL, 0x8e4631)); + public static final RegistryEntry CIGARETTE = registerStatusEffect("cigarette", + new CigaretteEffect(StatusEffectCategory.BENEFICIAL, 0xE6A74F) + .addAttributeModifier(EntityAttributes.GENERIC_MOVEMENT_SPEED, Identifier.of(AcesBS.MOD_ID, "cigarette"), + 1F, EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL)); + + public static final RegistryEntry WITHDRAWAL = registerStatusEffect("withdrawal", + new WithdrawalEffect(StatusEffectCategory.HARMFUL, 0x4A412A) + .addAttributeModifier(EntityAttributes.GENERIC_MOVEMENT_SPEED, Identifier.of(AcesBS.MOD_ID, "withdrawal"), + -0.5F, EntityAttributeModifier.Operation.ADD_MULTIPLIED_TOTAL)); + + public static final RegistryEntry JITTERY = registerStatusEffect("jittery", + new JitteryEffect(StatusEffectCategory.HARMFUL, 0xeb9bff)); + private static RegistryEntry registerStatusEffect (String name, StatusEffect effect){ return Registry.registerReference(Registries.STATUS_EFFECT, Identifier.of(AcesBS.MOD_ID, name), effect); } diff --git a/src/main/java/com/acethewildfire/acesbs/effect/WithdrawalEffect.java b/src/main/java/com/acethewildfire/acesbs/effect/WithdrawalEffect.java new file mode 100644 index 0000000..bb4d54c --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/effect/WithdrawalEffect.java @@ -0,0 +1,21 @@ +package com.acethewildfire.acesbs.effect; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffect; +import net.minecraft.entity.effect.StatusEffectCategory; + +public class WithdrawalEffect extends StatusEffect { + protected WithdrawalEffect(StatusEffectCategory category, int color) { + super(category, color); + } + + @Override + public boolean applyUpdateEffect(LivingEntity entity, int amplifier) { + return true; + } + + @Override + public boolean canApplyUpdateEffect(int duration, int amplifier) { + return true; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModFoodComponent.java b/src/main/java/com/acethewildfire/acesbs/item/ModFoodComponent.java index 644f1ef..9c809a2 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModFoodComponent.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModFoodComponent.java @@ -3,7 +3,6 @@ package com.acethewildfire.acesbs.item; import com.acethewildfire.acesbs.effect.ModEffects; import net.minecraft.component.type.FoodComponent; import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; public class ModFoodComponent { @@ -29,4 +28,10 @@ public class ModFoodComponent { .statusEffect(new StatusEffectInstance(ModEffects.BRICKED_UP, 160), 1f) .alwaysEdible() .build(); + public static final FoodComponent CIGARETTE = new FoodComponent.Builder() + .nutrition(0) + .saturationModifier(0f) + .statusEffect(new StatusEffectInstance(ModEffects.CIGARETTE, 6000), 1f) + .alwaysEdible() + .build(); } diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java index 9bef0d8..f796a7a 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java @@ -21,7 +21,8 @@ public class ModItemGroups { entries.add(ModItems.INFERNAL_ASHES); entries.add(ModItems.RAW_ENDTROPY); entries.add(ModItems.STABLE_ENDTROPY); - entries.add(ModItems.PRISMA_STEEL); + entries.add(PrismaSteelItems.PRISMA_STEEL); + entries.add(ModItems.MOTE_OF_ORDER); entries.add(ModItems.LEMON); entries.add(ModItems.COOKED_LEMON); entries.add(ModItems.INFERNAL_BEEF); @@ -31,6 +32,9 @@ public class ModItemGroups { entries.add(ModItems.CRAB_RAVE_MUSIC_DISC); entries.add(ModItems.TOBACCO_SEEDS); entries.add(ModItems.TOBACCO); + entries.add(ModItems.CIGARETTE); + entries.add(ModItems.CIGARETTE_LEMON); + entries.add(ModItems.CIGARETTE_FUNNY); entries.add(ModItems.FREN_SPAWN_EGG); }) .build(); @@ -83,16 +87,16 @@ public class ModItemGroups { public static final ItemGroup ACES_BS_COMBAT = FabricItemGroup.builder() - .icon(() -> new ItemStack(ModItems.PRISMA_STEEL_SWORD)) + .icon(() -> new ItemStack(PrismaSteelItems.PRISMA_STEEL_SWORD)) .displayName(Text.translatable("itemgroup.acesbs.4_combat")) .entries((displayContext, entries) -> { - entries.add(ModItems.PRISMA_STEEL_SWORD); - entries.add(ModItems.PRISMA_STEEL_AXE); - entries.add(ModItems.PRISMA_STEEL_HELMET); - entries.add(ModItems.PRISMA_STEEL_CHESTPLATE); - entries.add(ModItems.PRISMA_STEEL_LEGGINGS); - entries.add(ModItems.PRISMA_STEEL_BOOTS); - entries.add(ModItems.PRISMA_SMITHING_TEMPLATE); + entries.add(PrismaSteelItems.PRISMA_STEEL_SWORD); + entries.add(PrismaSteelItems.PRISMA_STEEL_AXE); + entries.add(PrismaSteelItems.PRISMA_STEEL_HELMET); + entries.add(PrismaSteelItems.PRISMA_STEEL_CHESTPLATE); + entries.add(PrismaSteelItems.PRISMA_STEEL_LEGGINGS); + entries.add(PrismaSteelItems.PRISMA_STEEL_BOOTS); + entries.add(PrismaSteelItems.PRISMA_SMITHING_TEMPLATE); entries.add(ModItems.KAUPEN_BOW); entries.add(ModItems.COMBUSTIBLE_LEMON); entries.add(ModItems.BERSERKERS_PAULDRON); @@ -103,15 +107,15 @@ public class ModItemGroups { public static final ItemGroup ACES_BS_TOOLS = FabricItemGroup.builder() - .icon(() -> new ItemStack(ModItems.PRISMA_STEEL_PICKAXE)) + .icon(() -> new ItemStack(PrismaSteelItems.PRISMA_STEEL_PICKAXE)) .displayName(Text.translatable("itemgroup.acesbs.3_tools")) .entries((displayContext, entries) -> { entries.add(ModItems.WAND); - entries.add(ModItems.PRISMA_STEEL_SHOVEL); - entries.add(ModItems.PRISMA_STEEL_PICKAXE); - entries.add(ModItems.PRISMA_STEEL_HAMMER); - entries.add(ModItems.PRISMA_STEEL_AXE); - entries.add(ModItems.PRISMA_STEEL_HOE); + entries.add(PrismaSteelItems.PRISMA_STEEL_SHOVEL); + entries.add(PrismaSteelItems.PRISMA_STEEL_PICKAXE); + entries.add(PrismaSteelItems.PRISMA_STEEL_HAMMER); + entries.add(PrismaSteelItems.PRISMA_STEEL_AXE); + entries.add(PrismaSteelItems.PRISMA_STEEL_HOE); diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java index 89989cc..16dc815 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java @@ -2,27 +2,27 @@ package com.acethewildfire.acesbs.item; import com.acethewildfire.acesbs.AcesBS; import com.acethewildfire.acesbs.block.ModBlocks; -import com.acethewildfire.acesbs.item.custom.*; import com.acethewildfire.acesbs.entity.ModEntities; +import com.acethewildfire.acesbs.item.custom.*; import com.acethewildfire.acesbs.potion.ModPotions; import com.acethewildfire.acesbs.sounds.ModSounds; import net.minecraft.client.gui.screen.Screen; import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.*; +import net.minecraft.component.type.AttributeModifierSlot; +import net.minecraft.component.type.AttributeModifiersComponent; +import net.minecraft.component.type.LoreComponent; +import net.minecraft.component.type.PotionContentsComponent; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.item.*; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; -import net.minecraft.resource.featuretoggle.FeatureFlags; -import net.minecraft.text.RawFilteredPair; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import java.util.List; -import java.util.Optional; public class ModItems { public static final Item ORACLE_LEMON = registerItem("oracle_lemon", new OracleLemon(new Item.Settings().component(DataComponentTypes.POTION_CONTENTS, new PotionContentsComponent(ModPotions.LEMON)))); @@ -78,52 +78,17 @@ public class ModItems { } }); - public static final Item PRISMA_STEEL = registerItem("prisma_steel", new Item(new Item.Settings())); - public static final Item PRISMA_STEEL_SWORD = registerItem("prisma_steel_sword", - new SwordItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() - .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, 3, -2.4f)))); - - public static final Item PRISMA_STEEL_SHOVEL = registerItem("prisma_steel_shovel", - new ShovelItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() - .attributeModifiers(ShovelItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, 1.5F, -3.0F))) - ); - public static final Item PRISMA_STEEL_PICKAXE = registerItem("prisma_steel_pickaxe", - new PickaxeItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() - .attributeModifiers(PickaxeItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, 1.0F, -2.8F))) - ); - - public static final Item PRISMA_STEEL_HAMMER = registerItem("prisma_steel_hammer", - new HammerItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() - .attributeModifiers(PickaxeItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, 7.0F, -3.4F))) - ); - - public static final Item PRISMA_STEEL_AXE = registerItem("prisma_steel_axe", - new AxeItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() - .attributeModifiers(AxeItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, 6.0F, -3.1F))) - ); - public static final Item PRISMA_STEEL_HOE = registerItem("prisma_steel_hoe", - new HoeItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() - .attributeModifiers(HoeItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, -2.0F, -1.0F))) - ); - - public static final Item PRISMA_STEEL_HELMET = registerItem("prisma_steel_helmet", - new ModArmorItem(ModArmorMaterials.PRISMA_STEEL_ARMOR_MATERIAL, ArmorItem.Type.HELMET, new Item.Settings() - .maxDamage(ArmorItem.Type.HELMET.getMaxDamage(15)))); - - public static final Item PRISMA_STEEL_CHESTPLATE = registerItem("prisma_steel_chestplate", - new ModArmorItem(ModArmorMaterials.PRISMA_STEEL_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE, new Item.Settings() - .maxDamage(ArmorItem.Type.CHESTPLATE.getMaxDamage(15)))); - - public static final Item PRISMA_STEEL_LEGGINGS = registerItem("prisma_steel_leggings", - new ModArmorItem(ModArmorMaterials.PRISMA_STEEL_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS, new Item.Settings() - .maxDamage(ArmorItem.Type.LEGGINGS.getMaxDamage(15)))); - - public static final Item PRISMA_STEEL_BOOTS = registerItem("prisma_steel_boots", - new ModArmorItem(ModArmorMaterials.PRISMA_STEEL_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Settings() - .maxDamage(ArmorItem.Type.BOOTS.getMaxDamage(15)))); - - public static final Item PRISMA_SMITHING_TEMPLATE = registerItem("prisma_armor_trim_smithing_template", - SmithingTemplateItem.of(Identifier.of(AcesBS.MOD_ID, "prisma"), FeatureFlags.VANILLA)); + public static final Item MOTE_OF_ORDER = registerItem("mote_of_order", new Item(new Item.Settings()) { + public void appendTooltip(ItemStack stack, TooltipContext context, List tooltip, TooltipType type) { + if(!Screen.hasShiftDown()){ + tooltip.add(Text.translatable("tooltip.acesbs.generic.shift_up")); + } + else { + tooltip.add(Text.translatable("tooltip.acesbs.mote_of_order")); + } + super.appendTooltip(stack, context, tooltip, type); + } + }); public static final Item KAUPEN_BOW = registerItem("kaupen_bow", new BowItem(new Item.Settings().maxDamage(500)) { @@ -137,9 +102,6 @@ public class ModItems { tooltip.add(Text.translatable("tooltip.acesbs.kaupen_bow")); tooltip.add(Text.translatable("tooltip.acesbs.kaupen_bow_2")); } - - - super.appendTooltip(stack, context, tooltip, type); } }); @@ -177,14 +139,31 @@ public class ModItems { public static final Item TOBACCO = registerItem("tobacco", new Item(new Item.Settings())); + public static final Item CIGARETTE = registerItem("cigarette", new Cigarette(new Item.Settings().maxCount(20))); + public static final Item CIGARETTE_LEMON = registerItem("cigarette_lemon", new CigaretteLemon(new Item.Settings().maxCount(20))); + public static final Item CIGARETTE_FUNNY = registerItem("cigarette_funny", new CigaretteFunny(new Item.Settings().maxCount(20)){ + public void appendTooltip(ItemStack stack, TooltipContext context, List tooltip, TooltipType type) { + if(!Screen.hasShiftDown()){ + tooltip.add(Text.translatable("tooltip.acesbs.generic.shift_up")); + } + else { + tooltip.add(Text.translatable("tooltip.acesbs.cigarette_funny")); + } + super.appendTooltip(stack, context, tooltip, type); + } + }); + public static final Item FREN_SPAWN_EGG = registerItem("fren_spawn_egg", new SpawnEggItem(ModEntities.FREN, 894731, 0, new Item.Settings())); - private static Item registerItem(String name, Item item){ + + + public static Item registerItem(String name, Item item){ return Registry.register(Registries.ITEM, Identifier.of(AcesBS.MOD_ID, name), item); } public static void registerModItems() { + PrismaSteelItems.registerPrismaItems(); AcesBS.LOGGER.info("Registering Mod Items for " + AcesBS.MOD_ID); // ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS).register(fabricItemGroupEntries -> { diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModToolMaterials.java b/src/main/java/com/acethewildfire/acesbs/item/ModToolMaterials.java index 9ca33cf..f704ccf 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModToolMaterials.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModToolMaterials.java @@ -17,7 +17,7 @@ public enum ModToolMaterials implements ToolMaterial { // GOLD(BlockTags.INCORRECT_FOR_GOLD_TOOL, 32, 12.0F, 0.0F, 22, () -> Ingredient.ofItems(Items.GOLD_INGOT)), // NETHERITE(BlockTags.INCORRECT_FOR_NETHERITE_TOOL, 2031, 9.0F, 4.0F, 15, () -> Ingredient.ofItems(Items.NETHERITE_INGOT)); - PRISMA_STEEL(ModTags.Blocks.INCORRECT_FOR_PRISMA_STEEL_TOOL, 750, 8.0F, 2.0F, 22, () -> Ingredient.ofItems(ModItems.PRISMA_STEEL)); + PRISMA_STEEL(ModTags.Blocks.INCORRECT_FOR_PRISMA_STEEL_TOOL, 750, 8.0F, 2.0F, 22, () -> Ingredient.ofItems(PrismaSteelItems.PRISMA_STEEL)); private final TagKey inverseTag; private final int itemDurability; diff --git a/src/main/java/com/acethewildfire/acesbs/item/PrismaSteelItems.java b/src/main/java/com/acethewildfire/acesbs/item/PrismaSteelItems.java new file mode 100644 index 0000000..11147db --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/item/PrismaSteelItems.java @@ -0,0 +1,54 @@ +package com.acethewildfire.acesbs.item; + +import com.acethewildfire.acesbs.AcesBS; +import com.acethewildfire.acesbs.item.custom.HammerItem; +import com.acethewildfire.acesbs.item.custom.ModArmorItem; +import net.minecraft.item.*; +import net.minecraft.resource.featuretoggle.FeatureFlags; +import net.minecraft.util.Identifier; + +public class PrismaSteelItems { + + public static final Item PRISMA_STEEL = ModItems.registerItem("prisma_steel", new Item(new Item.Settings())); + public static final Item PRISMA_STEEL_SWORD = ModItems.registerItem("prisma_steel_sword", + new SwordItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() + .attributeModifiers(SwordItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, 3, -2.4f)))); + public static final Item PRISMA_STEEL_SHOVEL = ModItems.registerItem("prisma_steel_shovel", + new ShovelItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() + .attributeModifiers(ShovelItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, 1.5F, -3.0F))) + ); + public static final Item PRISMA_STEEL_PICKAXE = ModItems.registerItem("prisma_steel_pickaxe", + new PickaxeItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() + .attributeModifiers(PickaxeItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, 1.0F, -2.8F))) + ); + public static final Item PRISMA_STEEL_HAMMER = ModItems.registerItem("prisma_steel_hammer", + new HammerItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() + .attributeModifiers(PickaxeItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, 7.0F, -3.4F))) + ); + public static final Item PRISMA_STEEL_AXE = ModItems.registerItem("prisma_steel_axe", + new AxeItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() + .attributeModifiers(AxeItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, 6.0F, -3.1F))) + ); + public static final Item PRISMA_STEEL_HOE = ModItems.registerItem("prisma_steel_hoe", + new HoeItem(ModToolMaterials.PRISMA_STEEL, new Item.Settings() + .attributeModifiers(HoeItem.createAttributeModifiers(ModToolMaterials.PRISMA_STEEL, -2.0F, -1.0F))) + ); + public static final Item PRISMA_STEEL_HELMET = ModItems.registerItem("prisma_steel_helmet", + new ModArmorItem(ModArmorMaterials.PRISMA_STEEL_ARMOR_MATERIAL, ArmorItem.Type.HELMET, new Item.Settings() + .maxDamage(ArmorItem.Type.HELMET.getMaxDamage(15)))); + public static final Item PRISMA_STEEL_CHESTPLATE = ModItems.registerItem("prisma_steel_chestplate", + new ModArmorItem(ModArmorMaterials.PRISMA_STEEL_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE, new Item.Settings() + .maxDamage(ArmorItem.Type.CHESTPLATE.getMaxDamage(15)))); + public static final Item PRISMA_STEEL_LEGGINGS = ModItems.registerItem("prisma_steel_leggings", + new ModArmorItem(ModArmorMaterials.PRISMA_STEEL_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS, new Item.Settings() + .maxDamage(ArmorItem.Type.LEGGINGS.getMaxDamage(15)))); + public static final Item PRISMA_STEEL_BOOTS = ModItems.registerItem("prisma_steel_boots", + new ModArmorItem(ModArmorMaterials.PRISMA_STEEL_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Settings() + .maxDamage(ArmorItem.Type.BOOTS.getMaxDamage(15)))); + public static final Item PRISMA_SMITHING_TEMPLATE = ModItems.registerItem("prisma_armor_trim_smithing_template", + SmithingTemplateItem.of(Identifier.of(AcesBS.MOD_ID, "prisma"), FeatureFlags.VANILLA)); + + public static void registerPrismaItems() { + // Do nothing, this just makes sure the items get registered + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/item/custom/Cigarette.java b/src/main/java/com/acethewildfire/acesbs/item/custom/Cigarette.java new file mode 100644 index 0000000..6fbae02 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/item/custom/Cigarette.java @@ -0,0 +1,119 @@ +package com.acethewildfire.acesbs.item.custom; + +import com.acethewildfire.acesbs.component.ModDataComponentTypes; +import com.acethewildfire.acesbs.effect.ModEffects; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.UseAction; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public class Cigarette extends Item { + public Cigarette(Settings settings) { + super(settings); + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + if (!user.getItemCooldownManager().isCoolingDown(this)) { + user.setCurrentHand(hand); + user.getStackInHand(hand).set(ModDataComponentTypes.SMOKING, true); + return TypedActionResult.consume(user.getStackInHand(hand)); + } + return TypedActionResult.fail(user.getStackInHand(hand)); + } + + @Override + public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + super.onStoppedUsing(stack, world, user, remainingUseTicks); + stack.set(ModDataComponentTypes.SMOKING, false); + } + + @Override + public UseAction getUseAction(ItemStack stack) { + return UseAction.TOOT_HORN; + } + + @Override + public SoundEvent getEatSound() { + return SoundEvents.INTENTIONALLY_EMPTY; + } + + @Override + public int getMaxUseTime(ItemStack stack, LivingEntity user) { + return 50; // basically infinite hold + } + + @Override + public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { + super.usageTick(world, user, stack, remainingUseTicks); + + if (world.isClient) { + + // Direction player is looking + Vec3d look = user.getRotationVec(1.0f); + + // Spawn position (near mouth) + double x = user.getX() + look.x * 0.3; + double y = user.getEyeY() - 0.15; + double z = user.getZ() + look.z * 0.3; + + // Base outward velocity + double speed = 0.08; + + // Add small randomness so it spreads naturally + double vx = look.x * speed + (world.random.nextDouble() - 0.5) * 0.02; + double vy = 0.02 + (world.random.nextDouble() * 0.02); // slight upward drift + double vz = look.z * speed + (world.random.nextDouble() - 0.5) * 0.02; + + if (remainingUseTicks % 4 == 0) { + world.addParticle( + ParticleTypes.SMOKE, + x, y, z, + vx, vy, vz + ); + } + } + + // Serverside code + if (!world.isClient){ + if (remainingUseTicks % 40 == 0) { + world.playSound( + null, + user.getX(), + user.getY(), + user.getZ(), + SoundEvents.ENTITY_GENERIC_EXTINGUISH_FIRE, + SoundCategory.PLAYERS, + 1.0f, + 1.0f + ); + } + } + + } + + @Override + public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) { + user.addStatusEffect(new StatusEffectInstance( + ModEffects.CIGARETTE, + 6000, + 0 + )); + stack.set(ModDataComponentTypes.SMOKING, false); + if (user instanceof PlayerEntity player) { + player.getItemCooldownManager().set(this, 2400); + stack.decrement(1); + } + return stack; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/item/custom/CigaretteFunny.java b/src/main/java/com/acethewildfire/acesbs/item/custom/CigaretteFunny.java new file mode 100644 index 0000000..4adc11a --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/item/custom/CigaretteFunny.java @@ -0,0 +1,136 @@ +package com.acethewildfire.acesbs.item.custom; + +import com.acethewildfire.acesbs.component.ModDataComponentTypes; +import com.acethewildfire.acesbs.effect.ModEffects; +import com.acethewildfire.acesbs.sounds.ModSounds; +import com.acethewildfire.acesbs.sounds.PlayerAttachedSound; +import net.minecraft.client.MinecraftClient; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.UseAction; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public class CigaretteFunny extends Item { + public CigaretteFunny(Settings settings) { + super(settings); + } + + // Store the currently playing sound (client only) + private static PlayerAttachedSound activeSound; + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + if (!user.getItemCooldownManager().isCoolingDown(this)) { + user.setCurrentHand(hand); + user.getStackInHand(hand).set(ModDataComponentTypes.SMOKING, true); + return TypedActionResult.consume(user.getStackInHand(hand)); + } + return TypedActionResult.fail(user.getStackInHand(hand)); + } + + @Override + public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + super.onStoppedUsing(stack, world, user, remainingUseTicks); + + if (activeSound != null) { + MinecraftClient.getInstance().getSoundManager().stop(activeSound); + activeSound = null; + } + + stack.set(ModDataComponentTypes.SMOKING, false); + } + + @Override + public UseAction getUseAction(ItemStack stack) { + return UseAction.TOOT_HORN; + } + + @Override + public SoundEvent getEatSound() { + return SoundEvents.INTENTIONALLY_EMPTY; + } + + @Override + public int getMaxUseTime(ItemStack stack, LivingEntity user) { + return 72000; // basically infinite hold + } + + @Override + public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { + super.usageTick(world, user, stack, remainingUseTicks); + + if (world.isClient) { + + if (activeSound == null) { + activeSound = new PlayerAttachedSound( + ((PlayerEntity) user), + ModSounds.SMOKING + ); + + MinecraftClient.getInstance().getSoundManager().play(activeSound); + } + // Direction player is looking + Vec3d look = user.getRotationVec(1.0f); + + // Spawn position (near mouth) + double x = user.getX() + look.x * 0.3; + double y = user.getEyeY() - 0.15; + double z = user.getZ() + look.z * 0.3; + + // Base outward velocity + double speed = 0.3; + + for (int i = 0; i < 40; i++) { + double vx = look.x * speed + (world.random.nextDouble() - 0.5) * 0.3; + double vy = look.y * speed + (world.random.nextDouble() - 0.5) * 0.1; + double vz = look.z * speed + (world.random.nextDouble() - 0.5) * 0.3; + + world.addParticle( + ParticleTypes.CAMPFIRE_COSY_SMOKE, + x, y, z, + vx, vy, vz + ); + } + } + + // Serverside code + if (!world.isClient) { +// if (remainingUseTicks % 40 == 0) { +// world.playSound( +// null, +// user.getX(), +// user.getY(), +// user.getZ(), +// SoundEvents.ENTITY_GENERIC_EXTINGUISH_FIRE, +// SoundCategory.PLAYERS, +// 1.0f, +// 1.0f +// ); +// } + } + } + + @Override + public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) { + user.addStatusEffect(new StatusEffectInstance( + ModEffects.CIGARETTE, + 6000, + 0 + )); + stack.set(ModDataComponentTypes.SMOKING, false); + if (user instanceof PlayerEntity player) { + player.getItemCooldownManager().set(this, 2400); + stack.decrement(1); + } + return stack; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/item/custom/CigaretteLemon.java b/src/main/java/com/acethewildfire/acesbs/item/custom/CigaretteLemon.java new file mode 100644 index 0000000..506b0e7 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/item/custom/CigaretteLemon.java @@ -0,0 +1,145 @@ +package com.acethewildfire.acesbs.item.custom; + +import com.acethewildfire.acesbs.component.ModDataComponentTypes; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.UseAction; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import net.minecraft.world.explosion.Explosion; + +public class CigaretteLemon extends Item { + public CigaretteLemon(Settings settings) { + super(settings); + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + if (!user.getItemCooldownManager().isCoolingDown(this)) { + user.setCurrentHand(hand); + user.getStackInHand(hand).set(ModDataComponentTypes.SMOKING, true); + return TypedActionResult.consume(user.getStackInHand(hand)); + } + return TypedActionResult.fail(user.getStackInHand(hand)); + } + + @Override + public UseAction getUseAction(ItemStack stack) { + return UseAction.TOOT_HORN; + } + + @Override + public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) { + super.onStoppedUsing(stack, world, user, remainingUseTicks); + stack.set(ModDataComponentTypes.SMOKING, false); + } + + @Override + public SoundEvent getEatSound() { + return SoundEvents.INTENTIONALLY_EMPTY; + } + + @Override + public int getMaxUseTime(ItemStack stack, LivingEntity user) { + return 50; // basically infinite hold + } + + @Override + public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) { + super.usageTick(world, user, stack, remainingUseTicks); + + if (world.isClient) { + + // Direction player is looking + Vec3d look = user.getRotationVec(1.0f); + + // Spawn position (near mouth) + double x = user.getX() + look.x * 0.3; + double y = user.getEyeY() - 0.15; + double z = user.getZ() + look.z * 0.3; + + // Base outward velocity + double speed = 0.08; + + // Add small randomness so it spreads naturally + double vx = look.x * speed + (world.random.nextDouble() - 0.5) * 0.02; + double vy = 0.02 + (world.random.nextDouble() * 0.02); // slight upward drift + double vz = look.z * speed + (world.random.nextDouble() - 0.5) * 0.02; + + if (remainingUseTicks % 4 == 0) { + world.addParticle( + ParticleTypes.SMOKE, + x, y, z, + vx, vy, vz + ); + } + } + + // Serverside code + if (!world.isClient){ + if (remainingUseTicks % 40 == 0) { + world.playSound( + null, + user.getX(), + user.getY(), + user.getZ(), + SoundEvents.ENTITY_GENERIC_EXTINGUISH_FIRE, + SoundCategory.PLAYERS, + 1.0f, + 1.0f + ); + } + } + + } + + @Override + public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) { + // Eye position of the player + Vec3d eyePos = user.getCameraPosVec(1.0F); + + for (int i = 0; i < 6; i++) { + double offsetX = (world.random.nextDouble() - 0.5) * 2 * 0.5f; + double offsetY = (world.random.nextDouble() - 0.5) * 2 * 0.5f; + double offsetZ = (world.random.nextDouble() - 0.5) * 2 * 0.5f; + + world.addParticle( + ParticleTypes.EXPLOSION, + eyePos.x + offsetX, + eyePos.y + offsetY, + eyePos.z + offsetZ, + 1, 0, 0 + ); + } + stack.set(ModDataComponentTypes.SMOKING, false); + Explosion explosion = new Explosion( + world, + user, + user.getX(), + user.getY(), + user.getZ(), + 4.0f, + false, + Explosion.DestructionType.KEEP + ); + explosion.collectBlocksAndDamageEntities(); + user.damage(user.getDamageSources().explosion(user, user), 20F); + explosion.affectWorld(true); + + + + if (user instanceof PlayerEntity player) { + player.getItemCooldownManager().set(this, 2400); + stack.decrement(1); + } + return stack; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/sounds/ModSounds.java b/src/main/java/com/acethewildfire/acesbs/sounds/ModSounds.java index e2433b8..a886d7e 100644 --- a/src/main/java/com/acethewildfire/acesbs/sounds/ModSounds.java +++ b/src/main/java/com/acethewildfire/acesbs/sounds/ModSounds.java @@ -6,9 +6,7 @@ import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; -import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.SoundEvent; -import net.minecraft.sound.SoundEvents; import net.minecraft.util.Identifier; public class ModSounds { @@ -18,6 +16,7 @@ public class ModSounds { public static final SoundEvent HOLY = registerSoundEvent("holy"); public static final SoundEvent HOLY_S = registerSoundEvent("holy_s"); public static final SoundEvent BRICKED_UP = registerSoundEvent("bricked_up"); + public static final SoundEvent SMOKING = registerSoundEvent("smoking"); // public static final BlockSoundGroup LIZARD_SOUNDS = new BlockSoundGroup(1f, 1f, SoundEvents.BLOCK_WOOD_BREAK, SoundEvents.BLOCK_WOOD_STEP, SoundEvents.BLOCK_WOOD_PLACE, SoundEvents.BLOCK_WOOD_HIT, SoundEvents.BLOCK_WOOD_FALL) diff --git a/src/main/java/com/acethewildfire/acesbs/sounds/PlayerAttachedSound.java b/src/main/java/com/acethewildfire/acesbs/sounds/PlayerAttachedSound.java new file mode 100644 index 0000000..dc84ace --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/sounds/PlayerAttachedSound.java @@ -0,0 +1,32 @@ +package com.acethewildfire.acesbs.sounds; + +import net.minecraft.client.sound.MovingSoundInstance; +import net.minecraft.client.sound.SoundInstance; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvent; + +public class PlayerAttachedSound extends MovingSoundInstance { + + private final PlayerEntity player; + + public PlayerAttachedSound(PlayerEntity player, SoundEvent sound) { + super(sound, SoundCategory.PLAYERS, SoundInstance.createRandom()); + this.player = player; + this.repeat = true; + this.repeatDelay = 0; + this.volume = 1.0f; + } + + @Override + public void tick() { + if (player.isRemoved() || player.isDead()) { + setDone(); + return; + } + + this.x = (float) player.getX(); + this.y = (float) player.getEyeY(); + this.z = (float) player.getZ(); + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/trim/ModTrimMaterials.java b/src/main/java/com/acethewildfire/acesbs/trim/ModTrimMaterials.java index 0ef2693..f5f9d08 100644 --- a/src/main/java/com/acethewildfire/acesbs/trim/ModTrimMaterials.java +++ b/src/main/java/com/acethewildfire/acesbs/trim/ModTrimMaterials.java @@ -1,7 +1,7 @@ package com.acethewildfire.acesbs.trim; import com.acethewildfire.acesbs.AcesBS; -import com.acethewildfire.acesbs.item.ModItems; +import com.acethewildfire.acesbs.item.PrismaSteelItems; import net.minecraft.item.Item; import net.minecraft.item.trim.ArmorTrimMaterial; import net.minecraft.registry.Registerable; @@ -23,7 +23,7 @@ public class ModTrimMaterials { Identifier.of(AcesBS.MOD_ID, "prisma_steel")); public static void bootstrap (Registerable registerable){ - register(registerable, PRISMA_STEEL, Registries.ITEM.getEntry(ModItems.PRISMA_STEEL), + register(registerable, PRISMA_STEEL, Registries.ITEM.getEntry(PrismaSteelItems.PRISMA_STEEL), Style.EMPTY.withColor(TextColor.parse("#B16491").getOrThrow()), 1.0f); } diff --git a/src/main/java/com/acethewildfire/acesbs/trim/ModTrimPatterns.java b/src/main/java/com/acethewildfire/acesbs/trim/ModTrimPatterns.java index 8b9785e..c6a4b79 100644 --- a/src/main/java/com/acethewildfire/acesbs/trim/ModTrimPatterns.java +++ b/src/main/java/com/acethewildfire/acesbs/trim/ModTrimPatterns.java @@ -1,7 +1,7 @@ package com.acethewildfire.acesbs.trim; import com.acethewildfire.acesbs.AcesBS; -import com.acethewildfire.acesbs.item.ModItems; +import com.acethewildfire.acesbs.item.PrismaSteelItems; import net.minecraft.item.Item; import net.minecraft.item.trim.ArmorTrimPattern; import net.minecraft.registry.Registerable; @@ -17,7 +17,7 @@ public class ModTrimPatterns { Identifier.of(AcesBS.MOD_ID, "prisma")); public static void bootstrap(Registerable context) { - register(context, ModItems.PRISMA_SMITHING_TEMPLATE, PRISMA); + register(context, PrismaSteelItems.PRISMA_SMITHING_TEMPLATE, PRISMA); } private static void register(Registerable context, Item item, RegistryKey key) { diff --git a/src/main/java/com/acethewildfire/acesbs/util/ModModelPredicates.java b/src/main/java/com/acethewildfire/acesbs/util/ModModelPredicates.java index df59823..d1c3140 100644 --- a/src/main/java/com/acethewildfire/acesbs/util/ModModelPredicates.java +++ b/src/main/java/com/acethewildfire/acesbs/util/ModModelPredicates.java @@ -13,6 +13,15 @@ public class ModModelPredicates { ModelPredicateProviderRegistry.register(ModItems.WAND, Identifier.of(AcesBS.MOD_ID, "used"), (stack, world, entity, seed) -> stack.get(ModDataComponentTypes.COORDINATES) != null ? 1f : 0f); + ModelPredicateProviderRegistry.register(ModItems.CIGARETTE, Identifier.of(AcesBS.MOD_ID, "smoking"), + (stack, world, entity, seed) -> Boolean.TRUE.equals(stack.get(ModDataComponentTypes.SMOKING)) ? 1f : 0f); + + ModelPredicateProviderRegistry.register(ModItems.CIGARETTE_FUNNY, Identifier.of(AcesBS.MOD_ID, "smoking"), + (stack, world, entity, seed) -> Boolean.TRUE.equals(stack.get(ModDataComponentTypes.SMOKING)) ? 1f : 0f); + + ModelPredicateProviderRegistry.register(ModItems.CIGARETTE_LEMON, Identifier.of(AcesBS.MOD_ID, "smoking"), + (stack, world, entity, seed) -> Boolean.TRUE.equals(stack.get(ModDataComponentTypes.SMOKING)) ? 1f : 0f); + registerCustomBow(ModItems.KAUPEN_BOW); } diff --git a/src/main/java/com/acethewildfire/acesbs/util/UpdateRecipies.java b/src/main/java/com/acethewildfire/acesbs/util/UpdateRecipies.java index f45b4dd..5838524 100644 --- a/src/main/java/com/acethewildfire/acesbs/util/UpdateRecipies.java +++ b/src/main/java/com/acethewildfire/acesbs/util/UpdateRecipies.java @@ -2,6 +2,7 @@ package com.acethewildfire.acesbs.util; import com.acethewildfire.acesbs.AcesBS; import com.acethewildfire.acesbs.item.ModItems; +import com.acethewildfire.acesbs.item.PrismaSteelItems; import net.fabricmc.fabric.api.loot.v3.LootTableEvents; import net.minecraft.block.Blocks; import net.minecraft.enchantment.Enchantment; @@ -27,7 +28,6 @@ import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryWrapper; import java.util.ArrayList; -import java.util.Collection; import java.util.List; public class UpdateRecipies { @@ -96,7 +96,7 @@ public class UpdateRecipies { LootPool.Builder extraPool = LootPool.builder() .rolls(UniformLootNumberProvider.create(1, 2)) .conditionally(InvertedLootCondition.builder(silkTouchCondition)) - .conditionally(specialToolCondition(ModItems.PRISMA_STEEL_PICKAXE, ModItems.PRISMA_STEEL_HAMMER)) + .conditionally(specialToolCondition(PrismaSteelItems.PRISMA_STEEL_PICKAXE, PrismaSteelItems.PRISMA_STEEL_HAMMER)) .with(ItemEntry.builder(Items.AIR).weight(460)) .with(ItemEntry.builder(Items.COAL).weight(12)) .with(ItemEntry.builder(Items.RAW_COPPER).weight(10)) diff --git a/src/main/resources/assets/acesbs/lang/en_us.json b/src/main/resources/assets/acesbs/lang/en_us.json index d490e32..58ae6af 100644 --- a/src/main/resources/assets/acesbs/lang/en_us.json +++ b/src/main/resources/assets/acesbs/lang/en_us.json @@ -23,6 +23,8 @@ "item.minecraft.lingering_potion.effect.lemon": "Lingering Potion of Puckered", "item.minecraft.tipped_arrow.effect.lemon": "Arrow of Puckered", + "item.acesbs.mote_of_order": "Mote of Order", + "item.acesbs.prisma_steel": "Prisma Steel", "item.acesbs.prisma_steel_sword": "Prisma Steel Sword", "item.acesbs.prisma_steel_pickaxe": "Prisma Steel Pickaxe", @@ -46,6 +48,9 @@ "item.acesbs.tobacco_seeds": "Tobacco Seeds", "item.acesbs.tobacco": "Tobacco", + "item.acesbs.cigarette": "Cigarette", + "item.acesbs.cigarette_lemon": "Cigarette", + "item.acesbs.cigarette_funny": "Cigarette", "item.acesbs.fren_spawn_egg": "Fren Spawn Egg", @@ -154,11 +159,15 @@ "tooltip.acesbs.combustible_lemon1": "§7§oDo you know who I am?§r", "tooltip.acesbs.combustible_lemon2": "§7§oI’m the man who’s gonna burn your house down!§r", + "tooltip.acesbs.mote_of_order": "§o§7A delicate mote of unrealized power.§r", + "tooltip.acesbs.cigarette_funny": "§o§7I am the danger of second hand smoke§r", + "sounds.acesbs.lizard": "Lizard!", "sounds.acesbs.holy": "Angelic Music", "sounds.acesbs.fart": "Loud Echoing Fart", "sounds.acesbs.grumble": "Stomach Grumbling", "sounds.acesbs.crab_rave": "Jukebox plays Crab Rave", + "sounds.acesbs.smoking": "Violent Smoking", "enchantment.acesbs.lightning_strike": "Lightning Strike", @@ -167,6 +176,8 @@ "effect.acesbs.infernal_fire": "Infernal Fire", "effect.acesbs.lemon": "Puckered", - "effect.acesbs.bricked_up": "Bricked Up" - + "effect.acesbs.bricked_up": "Bricked Up", + "effect.acesbs.cigarette": "Cigarette", + "effect.acesbs.withdrawal": "Withdrawal", + "effect.acesbs.jittery": "Jittery" } \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/models/item/cigarette.json b/src/main/resources/assets/acesbs/models/item/cigarette.json new file mode 100644 index 0000000..7a9fc86 --- /dev/null +++ b/src/main/resources/assets/acesbs/models/item/cigarette.json @@ -0,0 +1,14 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/cigarette" + }, + "overrides": [ + { + "predicate": { + "acesbs:smoking": 1 + }, + "model": "acesbs:item/smoking_cigarette" + } + ] +} diff --git a/src/main/resources/assets/acesbs/models/item/cigarette_funny.json b/src/main/resources/assets/acesbs/models/item/cigarette_funny.json new file mode 100644 index 0000000..7a9fc86 --- /dev/null +++ b/src/main/resources/assets/acesbs/models/item/cigarette_funny.json @@ -0,0 +1,14 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/cigarette" + }, + "overrides": [ + { + "predicate": { + "acesbs:smoking": 1 + }, + "model": "acesbs:item/smoking_cigarette" + } + ] +} diff --git a/src/main/resources/assets/acesbs/models/item/cigarette_lemon.json b/src/main/resources/assets/acesbs/models/item/cigarette_lemon.json new file mode 100644 index 0000000..7a9fc86 --- /dev/null +++ b/src/main/resources/assets/acesbs/models/item/cigarette_lemon.json @@ -0,0 +1,14 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/cigarette" + }, + "overrides": [ + { + "predicate": { + "acesbs:smoking": 1 + }, + "model": "acesbs:item/smoking_cigarette" + } + ] +} diff --git a/src/main/resources/assets/acesbs/models/item/smoking_cigarette.json b/src/main/resources/assets/acesbs/models/item/smoking_cigarette.json new file mode 100644 index 0000000..aa349a2 --- /dev/null +++ b/src/main/resources/assets/acesbs/models/item/smoking_cigarette.json @@ -0,0 +1,28 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/cigarette" + }, + "display": { + "thirdperson_righthand": { + "rotation": [-28, 55, 0], + "translation": [-1, 1, -1.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, -113, 0], + "translation": [-1, 2, -0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-180, 87, 144], + "translation": [0.5, -1.5, -11] + }, + "firstperson_lefthand": { + "rotation": [0, 115, 5], + "translation": [0, -2.5, -7.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/sounds.json b/src/main/resources/assets/acesbs/sounds.json index 4c34440..fc9f739 100644 --- a/src/main/resources/assets/acesbs/sounds.json +++ b/src/main/resources/assets/acesbs/sounds.json @@ -35,6 +35,12 @@ "acesbs:bricked_up" ] }, + "smoking": { + "subtitle": "sounds.acesbs.smoking", + "sounds": [ + "acesbs:smoking" + ] + }, "crab_rave": { "subtitle": "sounds.acesbs.crab_rave", "sounds": [ diff --git a/src/main/resources/assets/acesbs/sounds/smoking.ogg b/src/main/resources/assets/acesbs/sounds/smoking.ogg new file mode 100644 index 0000000..d093ad2 Binary files /dev/null and b/src/main/resources/assets/acesbs/sounds/smoking.ogg differ diff --git a/src/main/resources/assets/acesbs/textures/block/order_core.png b/src/main/resources/assets/acesbs/textures/block/order_core.png new file mode 100644 index 0000000..504c50d Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/block/order_core.png differ diff --git a/src/main/resources/assets/acesbs/textures/item/cigarette.png b/src/main/resources/assets/acesbs/textures/item/cigarette.png new file mode 100644 index 0000000..430e6d4 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/cigarette.png differ diff --git a/src/main/resources/assets/acesbs/textures/item/cigarette2.png b/src/main/resources/assets/acesbs/textures/item/cigarette2.png new file mode 100644 index 0000000..1481b42 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/cigarette2.png differ diff --git a/src/main/resources/assets/acesbs/textures/item/dust_of_order.png b/src/main/resources/assets/acesbs/textures/item/dust_of_order.png new file mode 100644 index 0000000..3e9be61 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/dust_of_order.png differ diff --git a/src/main/resources/assets/acesbs/textures/item/ingot_of_order.png b/src/main/resources/assets/acesbs/textures/item/ingot_of_order.png new file mode 100644 index 0000000..3e3f1a1 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/ingot_of_order.png differ diff --git a/src/main/resources/assets/acesbs/textures/item/mote_of_order.png b/src/main/resources/assets/acesbs/textures/item/mote_of_order.png new file mode 100644 index 0000000..9698d12 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/mote_of_order.png differ diff --git a/src/main/resources/assets/acesbs/textures/mob_effect/cigarette.png b/src/main/resources/assets/acesbs/textures/mob_effect/cigarette.png new file mode 100644 index 0000000..90a8345 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/mob_effect/cigarette.png differ diff --git a/src/main/resources/assets/acesbs/textures/mob_effect/jittery.png b/src/main/resources/assets/acesbs/textures/mob_effect/jittery.png new file mode 100644 index 0000000..90a8345 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/mob_effect/jittery.png differ diff --git a/src/main/resources/assets/acesbs/textures/mob_effect/withdrawal.png b/src/main/resources/assets/acesbs/textures/mob_effect/withdrawal.png new file mode 100644 index 0000000..90a8345 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/mob_effect/withdrawal.png differ diff --git a/src/main/resources/data/acesbs/recipe/mote_of_order_from_entropic_eviscerator.json b/src/main/resources/data/acesbs/recipe/mote_of_order_from_entropic_eviscerator.json new file mode 100644 index 0000000..959a48c --- /dev/null +++ b/src/main/resources/data/acesbs/recipe/mote_of_order_from_entropic_eviscerator.json @@ -0,0 +1,10 @@ +{ + "type": "acesbs:entropic_eviscerator", + "ingredient": { + "item": "acesbs:prisma_steel_block" + }, + "result": { + "count": 1, + "id": "acesbs:mote_of_order" + } +} \ No newline at end of file