From 336ed0f95cafc2d1715ac318c8c9db3d5dcb3756 Mon Sep 17 00:00:00 2001 From: Sunskimmer822 <92886026+Sunskimmer822@users.noreply.github.com> Date: Mon, 25 Jul 2022 20:09:13 -0700 Subject: [PATCH] stuff --- .../serenas/shitmod/LivingEntityMixin.java | 25 +++++++++++++++++++ .../net/serenas/shitmod/blazeMetalAxe.java | 7 ++++++ .../net/serenas/shitmod/blazeMetalHoe.java | 9 +++++++ .../serenas/shitmod/blazeMetalPickaxe.java | 9 +++++++ .../net/serenas/shitmod/blazeMetalSword.java | 9 +++++++ .../serenas/shitmod/careFreeMelodyEffect.java | 24 +++++++++++++++++- .../serenas/shitmod/sheepShearCallback.java | 25 +++++++++++++++++++ .../java/net/serenas/shitmod/testHammer.java | 6 +++++ src/main/resources/fabric.mod.json | 2 +- .../resources/serenas-shitmod.mixins.json | 14 +++++++++++ 10 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 src/main/java/net/serenas/shitmod/LivingEntityMixin.java create mode 100644 src/main/java/net/serenas/shitmod/sheepShearCallback.java create mode 100644 src/main/resources/serenas-shitmod.mixins.json diff --git a/src/main/java/net/serenas/shitmod/LivingEntityMixin.java b/src/main/java/net/serenas/shitmod/LivingEntityMixin.java new file mode 100644 index 0000000..95bd207 --- /dev/null +++ b/src/main/java/net/serenas/shitmod/LivingEntityMixin.java @@ -0,0 +1,25 @@ +package net.serenas.shitmod; + +import java.util.Random; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.damage.DamageSource; + +@Mixin(LivingEntity.class) +public class LivingEntityMixin { + @Inject(at = @At("HEAD"), method = "modifyAppliedDamage") +private void injectMethod(DamageSource source, Float amount, CallbackInfo info) { + Random r = new Random(); + int low = 1; + int high = 5; + int result = r.nextInt(high-low) + low; + if (result == 5) { + amount = 0f; + } +} +} diff --git a/src/main/java/net/serenas/shitmod/blazeMetalAxe.java b/src/main/java/net/serenas/shitmod/blazeMetalAxe.java index 89c93d4..2ee3747 100644 --- a/src/main/java/net/serenas/shitmod/blazeMetalAxe.java +++ b/src/main/java/net/serenas/shitmod/blazeMetalAxe.java @@ -1,5 +1,6 @@ package net.serenas.shitmod; +import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.projectile.FireballEntity; @@ -22,8 +23,14 @@ public class blazeMetalAxe extends AxeItem { Vec3d looking = PlayerEntity.getRotationVector(); World.spawnEntity(new FireballEntity(World, PlayerEntity, looking.x, looking.y, looking.z, 6)); PlayerEntity.getStackInHand(Hand).damage(100,PlayerEntity,e-> e.sendEquipmentBreakStatus(EquipmentSlot.MAINHAND)); + PlayerEntity.getItemCooldownManager().set(this, 40); return new TypedActionResult(ActionResult.SUCCESS, PlayerEntity.getStackInHand(Hand)); } + @Override + public void onCraft(ItemStack stack, World world, PlayerEntity player) { + stack.addEnchantment(Enchantments.FIRE_ASPECT, 2); + } + } diff --git a/src/main/java/net/serenas/shitmod/blazeMetalHoe.java b/src/main/java/net/serenas/shitmod/blazeMetalHoe.java index a2dc80b..7ddfcc8 100644 --- a/src/main/java/net/serenas/shitmod/blazeMetalHoe.java +++ b/src/main/java/net/serenas/shitmod/blazeMetalHoe.java @@ -1,12 +1,21 @@ package net.serenas.shitmod; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.HoeItem; +import net.minecraft.item.ItemStack; import net.minecraft.item.ToolMaterial; +import net.minecraft.world.World; public class blazeMetalHoe extends HoeItem { public blazeMetalHoe(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) { super(material, attackDamage, attackSpeed, settings); } + + @Override + public void onCraft(ItemStack stack, World world, PlayerEntity player) { + stack.addEnchantment(Enchantments.FIRE_ASPECT, 2); + } } diff --git a/src/main/java/net/serenas/shitmod/blazeMetalPickaxe.java b/src/main/java/net/serenas/shitmod/blazeMetalPickaxe.java index 4b97918..8f86dea 100644 --- a/src/main/java/net/serenas/shitmod/blazeMetalPickaxe.java +++ b/src/main/java/net/serenas/shitmod/blazeMetalPickaxe.java @@ -1,10 +1,19 @@ package net.serenas.shitmod; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; import net.minecraft.item.PickaxeItem; import net.minecraft.item.ToolMaterial; +import net.minecraft.world.World; public class blazeMetalPickaxe extends PickaxeItem { public blazeMetalPickaxe(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) { super(material, attackDamage, attackSpeed, settings); } + + @Override + public void onCraft(ItemStack stack, World world, PlayerEntity player) { + stack.addEnchantment(Enchantments.FIRE_ASPECT, 2); + } } \ No newline at end of file diff --git a/src/main/java/net/serenas/shitmod/blazeMetalSword.java b/src/main/java/net/serenas/shitmod/blazeMetalSword.java index 59c15d0..5ff2544 100644 --- a/src/main/java/net/serenas/shitmod/blazeMetalSword.java +++ b/src/main/java/net/serenas/shitmod/blazeMetalSword.java @@ -1,5 +1,6 @@ package net.serenas.shitmod; +import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.projectile.FireballEntity; @@ -22,8 +23,16 @@ public class blazeMetalSword extends SwordItem { public TypedActionResult use(World World, PlayerEntity PlayerEntity, Hand Hand) { Vec3d looking = PlayerEntity.getRotationVector(); FireballEntity fireball = new FireballEntity(World, PlayerEntity, (2*looking.x), (2*looking.y), (2*looking.z), 5); + fireball.setOwner(PlayerEntity); World.spawnEntity(fireball); PlayerEntity.getStackInHand(Hand).damage(100,PlayerEntity,e-> e.sendEquipmentBreakStatus(EquipmentSlot.MAINHAND)); + PlayerEntity.getItemCooldownManager().set(this, 40); return new TypedActionResult(ActionResult.SUCCESS, PlayerEntity.getStackInHand(Hand)); } + + @Override + public void onCraft(ItemStack stack, World world, PlayerEntity player) { + stack.addEnchantment(Enchantments.FIRE_ASPECT, 4); + } + } diff --git a/src/main/java/net/serenas/shitmod/careFreeMelodyEffect.java b/src/main/java/net/serenas/shitmod/careFreeMelodyEffect.java index d39020e..96da156 100644 --- a/src/main/java/net/serenas/shitmod/careFreeMelodyEffect.java +++ b/src/main/java/net/serenas/shitmod/careFreeMelodyEffect.java @@ -1,11 +1,33 @@ package net.serenas.shitmod; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectCategory; public class careFreeMelodyEffect extends StatusEffect { protected careFreeMelodyEffect(StatusEffectCategory category, int color) { - super(category, color); + super( + StatusEffectCategory.BENEFICIAL, // whether beneficial or harmful for entities + 0x98D982); } + +// This method is called every tick to check whether it should apply the status effect or not +@Override +public boolean canApplyUpdateEffect(int duration, int amplifier) { + // In our case, we just make it return true so that it applies the status effect every tick. + return true; +} + +// This method is called when it applies the status effect. We implement custom functionality here. +@Override +public void applyUpdateEffect(LivingEntity entity, int amplifier) { + float damage = entity.getDamageTracker().getMostRecentDamage().getDamage(); + float health = entity.getDamageTracker().getMostRecentDamage().getEntityHealth(); + DamageSource source = entity.getDamageTracker().getMostRecentDamage().getDamageSource(); + entity.getDamageTracker().onDamage(source, health, damage); + +} + } diff --git a/src/main/java/net/serenas/shitmod/sheepShearCallback.java b/src/main/java/net/serenas/shitmod/sheepShearCallback.java new file mode 100644 index 0000000..0d53a65 --- /dev/null +++ b/src/main/java/net/serenas/shitmod/sheepShearCallback.java @@ -0,0 +1,25 @@ +package net.serenas.shitmod; + +import net.fabricmc.fabric.api.event.Event; +import net.fabricmc.fabric.api.event.EventFactory; +import net.minecraft.entity.passive.SheepEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.ActionResult; + +public interface sheepShearCallback { + + Event EVENT = EventFactory.createArrayBacked(sheepShearCallback.class, + (listeners) -> (player, sheep) -> { + for (sheepShearCallback listener : listeners) { + ActionResult result = listener.interact(player, sheep); + + if(result != ActionResult.PASS) { + return result; + } + } + + return ActionResult.PASS; + }); + + ActionResult interact(PlayerEntity player, SheepEntity sheep); +} \ No newline at end of file diff --git a/src/main/java/net/serenas/shitmod/testHammer.java b/src/main/java/net/serenas/shitmod/testHammer.java index 064779c..57b7754 100644 --- a/src/main/java/net/serenas/shitmod/testHammer.java +++ b/src/main/java/net/serenas/shitmod/testHammer.java @@ -2,6 +2,7 @@ package net.serenas.shitmod; import net.minecraft.block.BlockState; +import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.PickaxeItem; @@ -45,4 +46,9 @@ public class testHammer extends PickaxeItem { return true; } + + @Override + public void onCraft(ItemStack stack, World world, PlayerEntity player) { + stack.addEnchantment(Enchantments.EFFICIENCY, 5); + } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 33cb7da..e30bcc4 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -23,7 +23,7 @@ ] }, "mixins": [ - + ], "depends": { diff --git a/src/main/resources/serenas-shitmod.mixins.json b/src/main/resources/serenas-shitmod.mixins.json new file mode 100644 index 0000000..8e5a6c3 --- /dev/null +++ b/src/main/resources/serenas-shitmod.mixins.json @@ -0,0 +1,14 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "net.serenas.shitmod", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "LivingEntityMixin" + ], + "client": [], + "server": [], + "injectors": { + "defaultRequire": 1 + } + } \ No newline at end of file