mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-27 07:17:58 +01:00
Fixed muffins and rocks appearing invisible when thrown
This commit is contained in:
parent
5a900e8601
commit
2ad3f48f15
3 changed files with 19 additions and 16 deletions
|
@ -18,12 +18,13 @@ public class HeavyProjectileItem extends ProjectileItem {
|
|||
|
||||
@Override
|
||||
public PhysicsBodyProjectileEntity createProjectile(ItemStack stack, World world, @Nullable PlayerEntity player) {
|
||||
PhysicsBodyProjectileEntity projectile = player == null ? new PhysicsBodyProjectileEntity(world) : new PhysicsBodyProjectileEntity(world, player);
|
||||
PhysicsBodyProjectileEntity projectile = player == null
|
||||
? new PhysicsBodyProjectileEntity(world, stack.copyWithCount(1))
|
||||
: new PhysicsBodyProjectileEntity(world, player, stack.copyWithCount(1));
|
||||
if (player != null) {
|
||||
projectile.setVelocity(player, player.getPitch(), player.getYaw(), 0, 1.5F, 1);
|
||||
}
|
||||
projectile.pickupType = PersistentProjectileEntity.PickupPermission.ALLOWED;
|
||||
projectile.setStack(stack.copy().split(1));
|
||||
return projectile;
|
||||
}
|
||||
|
||||
|
|
|
@ -55,16 +55,18 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
|
|||
|
||||
private RegistryKey<DamageType> damageType = UDamageTypes.ROCK;
|
||||
|
||||
public PhysicsBodyProjectileEntity(World world, ItemStack stack) {
|
||||
super(UEntities.MUFFIN, world);
|
||||
setStack(stack);
|
||||
}
|
||||
|
||||
public PhysicsBodyProjectileEntity(EntityType<PhysicsBodyProjectileEntity> type, World world) {
|
||||
super(type, world);
|
||||
}
|
||||
|
||||
public PhysicsBodyProjectileEntity(World world) {
|
||||
this(UEntities.MUFFIN, world);
|
||||
}
|
||||
|
||||
public PhysicsBodyProjectileEntity(World world, @Nullable LivingEntity thrower) {
|
||||
public PhysicsBodyProjectileEntity(World world, @Nullable LivingEntity thrower, ItemStack stack) {
|
||||
super(UEntities.MUFFIN, thrower, world);
|
||||
setStack(stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -75,7 +77,7 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
|
|||
}
|
||||
|
||||
public void setStack(ItemStack stack) {
|
||||
getDataTracker().set(ITEM, stack);
|
||||
getDataTracker().set(ITEM, stack.copy());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -89,7 +91,7 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
|
|||
|
||||
@Override
|
||||
protected ItemStack asItemStack() {
|
||||
return getStack();
|
||||
return getStack().copy();
|
||||
}
|
||||
|
||||
public void setBouncy() {
|
||||
|
@ -273,7 +275,7 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
|
|||
super.writeCustomDataToNbt(nbt);
|
||||
ItemStack stack = getStack();
|
||||
if (!stack.isEmpty()) {
|
||||
nbt.put("Item", stack.writeNbt(new NbtCompound()));
|
||||
nbt.put("item", stack.writeNbt(new NbtCompound()));
|
||||
}
|
||||
nbt.putString("damageType", damageType.getValue().toString());
|
||||
}
|
||||
|
@ -281,7 +283,7 @@ public class PhysicsBodyProjectileEntity extends PersistentProjectileEntity impl
|
|||
@Override
|
||||
public void readCustomDataFromNbt(NbtCompound nbt) {
|
||||
super.readCustomDataFromNbt(nbt);
|
||||
setStack(ItemStack.fromNbt(nbt.getCompound("Item")));
|
||||
setStack(ItemStack.fromNbt(nbt.getCompound("item")));
|
||||
if (nbt.contains("damageType", NbtElement.STRING_TYPE)) {
|
||||
Optional.ofNullable(Identifier.tryParse(nbt.getString("damageType"))).ifPresent(id -> {
|
||||
setDamageType(RegistryKey.of(RegistryKeys.DAMAGE_TYPE, id));
|
||||
|
|
|
@ -38,12 +38,12 @@ public interface Projectile extends ItemConvertible {
|
|||
default TypedActionResult<ItemStack> triggerThrow(World world, PlayerEntity player, Hand hand) {
|
||||
ItemStack stack = player.getStackInHand(hand);
|
||||
|
||||
if (!world.isClient) {
|
||||
SoundEmitter.playSoundAt(player,
|
||||
getThrowSound(stack), SoundCategory.NEUTRAL,
|
||||
0.5F,
|
||||
0.4F / (world.random.nextFloat() * 0.4F + 0.8F));
|
||||
|
||||
if (!world.isClient) {
|
||||
world.spawnEntity(createProjectile(stack.copyWithCount(1), world, player));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue