forked from BRNSystems/tweaks
init
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
package systems.brn.justteleportalready;
|
||||
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
import net.fabricmc.fabric.api.gamerule.v1.GameRuleFactory;
|
||||
import net.fabricmc.fabric.api.gamerule.v1.GameRuleRegistry;
|
||||
import net.minecraft.world.GameRules;
|
||||
|
||||
public class Justteleportalready implements ModInitializer {
|
||||
public static final GameRules.Key<GameRules.IntRule> Entity_Portal_Cooldown =
|
||||
GameRuleRegistry.register("entityPortalCooldown", GameRules.Category.MOBS, GameRuleFactory.createIntRule(300));
|
||||
public static final GameRules.Key<GameRules.IntRule> Enderpearl_Damage =
|
||||
GameRuleRegistry.register("enderpearlDamage", GameRules.Category.PLAYER, GameRuleFactory.createIntRule(5));
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package systems.brn.justteleportalready.mixin;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.damage.DamageSource;
|
||||
import net.minecraft.world.World;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
import static systems.brn.justteleportalready.Justteleportalready.Enderpearl_Damage;
|
||||
|
||||
@Mixin(net.minecraft.entity.projectile.thrown.EnderPearlEntity.class)
|
||||
public class DontHurtMePearlMixin {
|
||||
|
||||
@Redirect(method = "onCollision(Lnet/minecraft/util/hit/HitResult;)V",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/entity/Entity;damage(Lnet/minecraft/entity/damage/DamageSource;F)Z"))
|
||||
private boolean redirectDamage(Entity entity, DamageSource source, float amount) {
|
||||
World world = entity.getWorld();
|
||||
entity.damage(source, world.getGameRules().getInt(Enderpearl_Damage));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package systems.brn.justteleportalready.mixin;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
import static systems.brn.justteleportalready.Justteleportalready.Entity_Portal_Cooldown;
|
||||
|
||||
@Mixin(net.minecraft.entity.Entity.class)
|
||||
public class JustTeleportAlreadyMixin {
|
||||
@Shadow private World world;
|
||||
|
||||
@Inject(method = "getDefaultPortalCooldown",
|
||||
at = @At(value = "RETURN"),
|
||||
cancellable = true)
|
||||
private void getDefaultPortalCooldown(CallbackInfoReturnable<Integer> cir) {
|
||||
cir.setReturnValue(world.getGameRules().getInt(Entity_Portal_Cooldown));
|
||||
}
|
||||
|
||||
@Shadow protected int portalCooldown;
|
||||
@Inject(method = "tickPortalCooldown", at = @At(value = "RETURN"))
|
||||
private void tickPortalCooldown(CallbackInfo ci) {
|
||||
int maxCooldown = world.getGameRules().getInt(Entity_Portal_Cooldown);
|
||||
if (portalCooldown > maxCooldown) {
|
||||
portalCooldown = maxCooldown;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user