Fixed muffins and rocks appearing invisible when thrown

This commit is contained in:
Sollace 2024-10-06 18:26:44 +01:00
parent 2422938dab
commit d54d644146
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
3 changed files with 17 additions and 10 deletions

View file

@ -19,8 +19,8 @@ public class HeavyProjectileItem extends ProjectileItem {
@Override @Override
public PhysicsBodyProjectileEntity createProjectile(ItemStack stack, World world, @Nullable PlayerEntity player) { public PhysicsBodyProjectileEntity createProjectile(ItemStack stack, World world, @Nullable PlayerEntity player) {
PhysicsBodyProjectileEntity projectile = player == null PhysicsBodyProjectileEntity projectile = player == null
? new PhysicsBodyProjectileEntity(world, stack.copyWithCount(1)) ? new PhysicsBodyProjectileEntity(world, stack)
: new PhysicsBodyProjectileEntity(world, player, stack.copyWithCount(1)); : new PhysicsBodyProjectileEntity(world, player, stack);
if (player != null) { if (player != null) {
projectile.setVelocity(player, player.getPitch(), player.getYaw(), 0, 1.5F, 1); projectile.setVelocity(player, player.getPitch(), player.getYaw(), 0, 1.5F, 1);
} }

View file

@ -57,6 +57,7 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
public PhysicsBodyProjectileEntity(EntityType<PhysicsBodyProjectileEntity> type, World world, ItemStack stack) { public PhysicsBodyProjectileEntity(EntityType<PhysicsBodyProjectileEntity> type, World world, ItemStack stack) {
super(type, world, stack); super(type, world, stack);
setStack(stack);
} }
public PhysicsBodyProjectileEntity(World world, ItemStack stack) { public PhysicsBodyProjectileEntity(World world, ItemStack stack) {
@ -65,6 +66,7 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
public PhysicsBodyProjectileEntity(World world, @Nullable LivingEntity thrower, ItemStack stack) { public PhysicsBodyProjectileEntity(World world, @Nullable LivingEntity thrower, ItemStack stack) {
super(UEntities.MUFFIN, thrower, world, stack); super(UEntities.MUFFIN, thrower, world, stack);
setStack(stack);
} }
@Override @Override
@ -75,7 +77,7 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
} }
public void setStack(ItemStack stack) { public void setStack(ItemStack stack) {
getDataTracker().set(ITEM, stack); getDataTracker().set(ITEM, stack.copy());
} }
@Override @Override
@ -89,6 +91,11 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
@Override @Override
protected ItemStack asItemStack() { protected ItemStack asItemStack() {
return getStack().copy();
}
@Override
public ItemStack getItemStack() {
return getStack(); return getStack();
} }
@ -273,7 +280,7 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
super.writeCustomDataToNbt(nbt); super.writeCustomDataToNbt(nbt);
ItemStack stack = getStack(); ItemStack stack = getStack();
if (!stack.isEmpty()) { if (!stack.isEmpty()) {
nbt.put("Item", stack.writeNbt(new NbtCompound())); nbt.put("item", stack.writeNbt(new NbtCompound()));
} }
nbt.putString("damageType", damageType.getValue().toString()); nbt.putString("damageType", damageType.getValue().toString());
} }
@ -281,7 +288,7 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
@Override @Override
public void readCustomDataFromNbt(NbtCompound nbt) { public void readCustomDataFromNbt(NbtCompound nbt) {
super.readCustomDataFromNbt(nbt); super.readCustomDataFromNbt(nbt);
setStack(ItemStack.fromNbt(nbt.getCompound("Item"))); setStack(ItemStack.fromNbt(nbt.getCompound("item")));
if (nbt.contains("damageType", NbtElement.STRING_TYPE)) { if (nbt.contains("damageType", NbtElement.STRING_TYPE)) {
Optional.ofNullable(Identifier.tryParse(nbt.getString("damageType"))).ifPresent(id -> { Optional.ofNullable(Identifier.tryParse(nbt.getString("damageType"))).ifPresent(id -> {
setDamageType(RegistryKey.of(RegistryKeys.DAMAGE_TYPE, id)); setDamageType(RegistryKey.of(RegistryKeys.DAMAGE_TYPE, id));

View file

@ -38,12 +38,12 @@ public interface Projectile extends ItemConvertible {
default TypedActionResult<ItemStack> triggerThrow(World world, PlayerEntity player, Hand hand) { default TypedActionResult<ItemStack> triggerThrow(World world, PlayerEntity player, Hand hand) {
ItemStack stack = player.getStackInHand(hand); ItemStack stack = player.getStackInHand(hand);
SoundEmitter.playSoundAt(player,
getThrowSound(stack), SoundCategory.NEUTRAL,
0.5F,
0.4F / (world.random.nextFloat() * 0.4F + 0.8F));
if (!world.isClient) { if (!world.isClient) {
SoundEmitter.playSoundAt(player,
getThrowSound(stack), SoundCategory.NEUTRAL,
0.5F,
0.4F / (world.random.nextFloat() * 0.4F + 0.8F));
world.spawnEntity(createProjectile(stack.copyWithCount(1), world, player)); world.spawnEntity(createProjectile(stack.copyWithCount(1), world, player));
} }