翻新快艇机木仓模型,修复yx100乘客武器站无法旋转的问题
This commit is contained in:
parent
91fec828ad
commit
0998f2dc30
8 changed files with 10346 additions and 440 deletions
|
@ -25,8 +25,10 @@ import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.level.ClipContext;
|
||||||
import net.minecraft.world.level.Explosion;
|
import net.minecraft.world.level.Explosion;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.Vec2;
|
import net.minecraft.world.phys.Vec2;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
import net.neoforged.api.distmarker.Dist;
|
import net.neoforged.api.distmarker.Dist;
|
||||||
|
@ -123,7 +125,29 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
this.handleAmmo();
|
this.handleAmmo();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.turretAngle(40, 40);
|
if (getFirstPassenger() instanceof Player player) {
|
||||||
|
BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getViewVector(1).scale(512)),
|
||||||
|
ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player));
|
||||||
|
|
||||||
|
Vec3 hitPos;
|
||||||
|
Entity lookingEntity = TraceTool.findLookingEntity(player, 520);
|
||||||
|
|
||||||
|
Matrix4f transform = getBarrelTransform(1);
|
||||||
|
|
||||||
|
Vector4f worldPosition = transformPosition(transform, 0, 0.20106875f, 1.9117f);
|
||||||
|
Vec3 shootPos = new Vec3(worldPosition.x + 0.5 * this.getDeltaMovement().x, worldPosition.y, worldPosition.z + 0.5 * this.getDeltaMovement().z);
|
||||||
|
|
||||||
|
|
||||||
|
if (lookingEntity != null) {
|
||||||
|
hitPos = TraceTool.playerFindLookingPos(player, lookingEntity, 512);
|
||||||
|
} else {
|
||||||
|
hitPos = result.getLocation();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hitPos != null) {
|
||||||
|
this.turretAutoAimFormVector(40, 40, -25, 50, shootPos.vectorTo(hitPos).normalize());
|
||||||
|
}
|
||||||
|
}
|
||||||
this.lowHealthWarning();
|
this.lowHealthWarning();
|
||||||
this.inertiaRotate(2);
|
this.inertiaRotate(2);
|
||||||
this.terrainCompact(2f, 3f);
|
this.terrainCompact(2f, 3f);
|
||||||
|
@ -159,7 +183,7 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
Matrix4f transform = getBarrelTransform(1);
|
Matrix4f transform = getBarrelTransform(1);
|
||||||
|
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
float y = 0.00106875f;
|
float y = 0.20106875f;
|
||||||
float z = 1.9117f;
|
float z = 1.9117f;
|
||||||
|
|
||||||
Vector4f worldPosition = transformPosition(transform, x, y, z);
|
Vector4f worldPosition = transformPosition(transform, x, y, z);
|
||||||
|
@ -348,8 +372,8 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float min = -40f - r * getXRot() - r2 * getRoll();
|
float min = -50f - r * getXRot() - r2 * getRoll();
|
||||||
float max = 20f - r * getXRot() - r2 * getRoll();
|
float max = 25f - r * getXRot() - r2 * getRoll();
|
||||||
|
|
||||||
float f = Mth.wrapDegrees(entity.getXRot());
|
float f = Mth.wrapDegrees(entity.getXRot());
|
||||||
float f1 = Mth.clamp(f, min, max);
|
float f1 = Mth.clamp(f, min, max);
|
||||||
|
|
|
@ -816,8 +816,8 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vec3 getBarrelVec(float ticks) {
|
public Vec3 getGunnerVector(float pPartialTicks) {
|
||||||
Matrix4f transform = getGunnerBarrelTransform(ticks);
|
Matrix4f transform = getGunnerBarrelTransform(pPartialTicks);
|
||||||
Vector4f rootPosition = transformPosition(transform, 0, 0, 0);
|
Vector4f rootPosition = transformPosition(transform, 0, 0, 0);
|
||||||
Vector4f targetPosition = transformPosition(transform, 0, 0, 1);
|
Vector4f targetPosition = transformPosition(transform, 0, 0, 1);
|
||||||
return new Vec3(rootPosition.x, rootPosition.y, rootPosition.z).vectorTo(new Vec3(targetPosition.x, targetPosition.y, targetPosition.z));
|
return new Vec3(rootPosition.x, rootPosition.y, rootPosition.z).vectorTo(new Vec3(targetPosition.x, targetPosition.y, targetPosition.z));
|
||||||
|
|
|
@ -123,13 +123,13 @@ public class TraceTool {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Vec3 playerFindLookingPos(Player player, VehicleEntity vehicle, double entityReach) {
|
public static Vec3 playerFindLookingPos(Player player, Entity entity, double entityReach) {
|
||||||
double distance = entityReach * entityReach;
|
double distance = entityReach * entityReach;
|
||||||
HitResult hitResult = player.pick(entityReach, 1.0f, false);
|
HitResult hitResult = player.pick(entityReach, 1.0f, false);
|
||||||
|
|
||||||
Vec3 viewVec = player.getViewVector(1);
|
Vec3 viewVec = player.getViewVector(1);
|
||||||
Vec3 toVec = player.getEyePosition().add(viewVec.x * entityReach, viewVec.y * entityReach, viewVec.z * entityReach);
|
Vec3 toVec = player.getEyePosition().add(viewVec.x * entityReach, viewVec.y * entityReach, viewVec.z * entityReach);
|
||||||
AABB aabb = vehicle.getBoundingBox().expandTowards(viewVec.scale(entityReach)).inflate(1.0D, 1.0D, 1.0D);
|
AABB aabb = entity.getBoundingBox().expandTowards(viewVec.scale(entityReach)).inflate(1.0D, 1.0D, 1.0D);
|
||||||
EntityHitResult entityhitresult = ProjectileUtil.getEntityHitResult(player, player.getEyePosition(), toVec, aabb, p -> true, distance);
|
EntityHitResult entityhitresult = ProjectileUtil.getEntityHitResult(player, player.getEyePosition(), toVec, aabb, p -> true, distance);
|
||||||
if (entityhitresult != null) {
|
if (entityhitresult != null) {
|
||||||
hitResult = entityhitresult;
|
hitResult = entityhitresult;
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"animation.speedboat.fire": {
|
"animation.speedboat.fire": {
|
||||||
"loop": "hold_on_last_frame",
|
|
||||||
"animation_length": 0.15,
|
"animation_length": 0.15,
|
||||||
"bones": {
|
"bones": {
|
||||||
"flare": {
|
"flare": {
|
||||||
|
@ -39,6 +38,18 @@
|
||||||
"0.0083": [0, 0, 0.85],
|
"0.0083": [0, 0, 0.85],
|
||||||
"0.0667": [0, 0, 0]
|
"0.0667": [0, 0, 0]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bullet_chain": {
|
||||||
|
"rotation": {
|
||||||
|
"0.0": [0, 0, 9],
|
||||||
|
"0.1167": [0, 0, 0],
|
||||||
|
"0.15": [0, 0, 0]
|
||||||
|
},
|
||||||
|
"position": {
|
||||||
|
"0.0": [0.6, -0.3, 0],
|
||||||
|
"0.1167": [0, 0, 0],
|
||||||
|
"0.15": [0, 0, 0]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
3562
src/main/resources/assets/superbwarfare/geo/speedboat22.geo.json
Normal file
3562
src/main/resources/assets/superbwarfare/geo/speedboat22.geo.json
Normal file
File diff suppressed because it is too large
Load diff
Binary file not shown.
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 38 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.1 KiB |
Loading…
Add table
Reference in a new issue