superb-warfare/src/main/java/net/mcreator/target/procedures/GunsDevProcedure.java
2024-05-05 15:44:33 +08:00

114 lines
4.9 KiB
Java

package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModAttributes;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import javax.annotation.Nullable;
@Mod.EventBusSubscriber
public class GunsDevProcedure {
@SubscribeEvent
public static void onPlayerTick(TickEvent.PlayerTickEvent event) {
if (event.phase == TickEvent.Phase.END) {
execute(event, event.player);
}
}
public static void execute(Entity entity) {
execute(null, entity);
}
private static void execute(@Nullable Event event, Entity entity) {
double[] recoilTimer = {0};
double totalTime = 20;
int sleepTime = 2;
double recoilDuration = totalTime / sleepTime;
Runnable recoilRunnable = () -> {
while (recoilTimer[0] < recoilDuration) {
if (entity == null)
return;
double walk;
double sprint;
double qianxing;
double basicdev;
double prone;
double jump;
double xishu;
double zoom;
double fire;
double ride;
basicdev = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("dev");
if (entity.getPersistentData().getDouble("qian") == 1 || entity.getPersistentData().getDouble("tui") == 1 || entity.getPersistentData().getDouble("mover") == 1 || entity.getPersistentData().getDouble("movel") == 1) {
walk = 0.2 * basicdev;
} else {
walk = 0;
}
if (entity.isSprinting()) {
sprint = 0.5 * basicdev;
} else {
sprint = 0;
}
if (entity.isShiftKeyDown()) {
qianxing = (-0.25) * basicdev;
} else {
qianxing = 0;
}
if (entity.getPersistentData().getDouble("prone") > 0) {
prone = (-0.5) * basicdev;
} else {
prone = 0;
}
if (entity.onGround()) {
jump = 0;
} else {
jump = 1.5 * basicdev;
}
if (entity.getPersistentData().getDouble("miaozhunshijian") > 4) {
if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("sniperguns") == 1) {
zoom = 0.001;
} else if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("shotgun") == 1) {
zoom = 0.9;
} else {
zoom = 0.1;
}
} else {
zoom = 1;
}
if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("fireanim") > 0) {
fire = 0.5 * basicdev;
} else {
fire = 0;
}
if (entity.isPassenger()) {
ride = (-0.5) * basicdev;
} else {
ride = 0;
}
xishu = zoom * (basicdev + walk + sprint + qianxing + prone + jump + fire + ride);
if (((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue() < xishu) {
((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get())
.setBaseValue((((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue() + 0.0125 * Math.pow(xishu - ((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue(), 2)));
} else {
((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get())
.setBaseValue((((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue() - 0.0125 * Math.pow(xishu - ((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue(), 2)));
}
recoilTimer[0]++;
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Thread recoilThread = new Thread(recoilRunnable);
recoilThread.start();
}
}