Skip to content
This repository has been archived by the owner on Jun 18, 2024. It is now read-only.

Commit

Permalink
init goal was added to bee, cow and sheep; flower and wheat perfume w…
Browse files Browse the repository at this point in the history
…as added
  • Loading branch information
anviaan committed Jul 2, 2023
1 parent 28fa053 commit 0f7c94e
Show file tree
Hide file tree
Showing 11 changed files with 143 additions and 7 deletions.
1 change: 0 additions & 1 deletion src/main/java/net/anvian/perfume/PerfumeMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ public class PerfumeMod implements ModInitializer {

@Override
public void onInitialize() {

ModItems.registerModItems();

ModStatusEffects.registerEffects();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

import java.util.EnumSet;

public class PigTemptGoal extends Goal {
public class ModTemptGoal extends Goal {
private static final TargetPredicate TEMPTING_ENTITY_PREDICATE = TargetPredicate.createNonAttackable().setBaseMaxDistance(10.0).ignoreVisibility();
private final TargetPredicate predicate;
protected final PathAwareEntity mob;
Expand All @@ -28,7 +28,7 @@ public class PigTemptGoal extends Goal {
private final StatusEffect statusEffect;
private final boolean canBeScared;

public PigTemptGoal(PathAwareEntity entity, double speed, StatusEffect statusEffect, boolean canBeScared) {
public ModTemptGoal(PathAwareEntity entity, double speed, StatusEffect statusEffect, boolean canBeScared) {
this.mob = entity;
this.speed = speed;
this.statusEffect = statusEffect;
Expand Down
33 changes: 33 additions & 0 deletions src/main/java/net/anvian/perfume/mixin/BeeInitGoalMixin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package net.anvian.perfume.mixin;

import net.anvian.perfume.custom.ModTemptGoal;
import net.anvian.perfume.statuseffect.ModStatusEffects;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.passive.BeeEntity;
import net.minecraft.entity.passive.PassiveEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
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;

@Mixin(BeeEntity.class)
public class BeeInitGoalMixin extends AnimalEntity {
protected BeeInitGoalMixin(EntityType<? extends AnimalEntity> entityType, World world) {
super(entityType, world);
}

@Inject(method = "initGoals()V", at=@At("HEAD"))
private void init(CallbackInfo ci){
this.goalSelector.add(3,new ModTemptGoal(this, 1.25, ModStatusEffects.FlowerEffect, false));
}

@Nullable
@Override
public PassiveEntity createChild(ServerWorld world, PassiveEntity entity) {
return null;
}
}
33 changes: 33 additions & 0 deletions src/main/java/net/anvian/perfume/mixin/CowInitGoalMixin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package net.anvian.perfume.mixin;

import net.anvian.perfume.custom.ModTemptGoal;
import net.anvian.perfume.statuseffect.ModStatusEffects;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.passive.CowEntity;
import net.minecraft.entity.passive.PassiveEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
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;

@Mixin(CowEntity.class)
public class CowInitGoalMixin extends AnimalEntity {
protected CowInitGoalMixin(EntityType<? extends AnimalEntity> entityType, World world) {
super(entityType, world);
}

@Inject(method = "initGoals()V", at=@At("HEAD"))
private void init(CallbackInfo ci){
this.goalSelector.add(3,new ModTemptGoal(this, 1.25, ModStatusEffects.WheatEffect, false));
}

@Nullable
@Override
public PassiveEntity createChild(ServerWorld world, PassiveEntity entity) {
return null;
}
}
4 changes: 2 additions & 2 deletions src/main/java/net/anvian/perfume/mixin/PigInitGoalMixin.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package net.anvian.perfume.mixin;

import net.anvian.perfume.custom.PigTemptGoal;
import net.anvian.perfume.custom.ModTemptGoal;
import net.anvian.perfume.statuseffect.ModStatusEffects;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.AnimalEntity;
Expand All @@ -22,7 +22,7 @@ protected PigInitGoalMixin(EntityType<? extends AnimalEntity> entityType, World

@Inject(method = "initGoals()V", at=@At("HEAD"))
private void init(CallbackInfo ci){
this.goalSelector.add(4,new PigTemptGoal(this, 1.2, ModStatusEffects.CarrotEffect, false));
this.goalSelector.add(3,new ModTemptGoal(this, 1.1, ModStatusEffects.CarrotEffect, false));
}

@Nullable
Expand Down
33 changes: 33 additions & 0 deletions src/main/java/net/anvian/perfume/mixin/SheepInitGoalMixin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package net.anvian.perfume.mixin;

import net.anvian.perfume.custom.ModTemptGoal;
import net.anvian.perfume.statuseffect.ModStatusEffects;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.passive.PassiveEntity;
import net.minecraft.entity.passive.SheepEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
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;

@Mixin(SheepEntity.class)
public class SheepInitGoalMixin extends AnimalEntity {
protected SheepInitGoalMixin(EntityType<? extends AnimalEntity> entityType, World world) {
super(entityType, world);
}

@Inject(method = "initGoals()V", at=@At("HEAD"))
private void init(CallbackInfo ci){
this.goalSelector.add(3,new ModTemptGoal(this, 1.1, ModStatusEffects.WheatEffect, false));
}

@Nullable
@Override
public PassiveEntity createChild(ServerWorld world, PassiveEntity entity) {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@

import net.anvian.perfume.PerfumeMod;
import net.anvian.perfume.statuseffect.effect.CarrotEffect;
import net.anvian.perfume.statuseffect.effect.FlowerEffect;
import net.anvian.perfume.statuseffect.effect.WheatEffect;
import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;

public class ModStatusEffects {
public static final StatusEffect CarrotEffect = registerStatusEffects("carrot_effect", new CarrotEffect());
public static final StatusEffect WheatEffect = registerStatusEffects("wheat_effect", new WheatEffect());
public static final StatusEffect FlowerEffect = registerStatusEffects("flower_effect", new FlowerEffect());

public static StatusEffect registerStatusEffects(String name, StatusEffect statusEffect){
return Registry.register(Registry.STATUS_EFFECT, new Identifier(PerfumeMod.MOD_ID, name), statusEffect);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package net.anvian.perfume.statuseffect.effect;

import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.entity.effect.StatusEffectCategory;

public class FlowerEffect extends StatusEffect {
public FlowerEffect() {
super(StatusEffectCategory.BENEFICIAL, 0x55ab2d);
}

@Override
public boolean canApplyUpdateEffect(int duration, int amplifier) {
return duration % 7 == 0;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package net.anvian.perfume.statuseffect.effect;

import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.entity.effect.StatusEffectCategory;

public class WheatEffect extends StatusEffect {
public WheatEffect() {
super(StatusEffectCategory.BENEFICIAL, 0xcdb159);
}

@Override
public boolean canApplyUpdateEffect(int duration, int amplifier) {
return duration % 7 == 0;
}
}
3 changes: 2 additions & 1 deletion src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
],
"contact": {
"homepage": "https://fabricmc.net/",
"sources": "https://github.com/FabricMC/fabric-example-mod"
"sources": "https://github.com/anviaan/Perfume-Mod",
"issues": "https://github.com/anviaan/Perfume-Mod/issues"
},
"contributors": [
"PinhaColada2222"
Expand Down
5 changes: 4 additions & 1 deletion src/main/resources/perfume.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
"package": "net.anvian.perfume.mixin",
"compatibilityLevel": "JAVA_17",
"mixins": [
"PigInitGoalMixin"
"PigInitGoalMixin",
"CowInitGoalMixin",
"SheepInitGoalMixin",
"BeeInitGoalMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down

0 comments on commit 0f7c94e

Please sign in to comment.