Advertisement
Guest User

Untitled

a guest
Sep 18th, 2020
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.13 KB | None | 0 0
  1. package com.jvanbruegge.techmod.cablecar;
  2.  
  3. import net.minecraft.entity.Entity;
  4. import net.minecraft.entity.EntityType;
  5. import net.minecraft.entity.MoverType;
  6. import net.minecraft.nbt.CompoundNBT;
  7. import net.minecraft.network.IPacket;
  8. import net.minecraft.network.datasync.DataParameter;
  9. import net.minecraft.network.datasync.DataSerializers;
  10. import net.minecraft.network.datasync.EntityDataManager;
  11. import net.minecraft.util.Direction;
  12. import net.minecraft.world.World;
  13. import net.minecraftforge.fml.network.NetworkHooks;
  14.  
  15. public class CablecarEntity extends Entity {
  16.     private static final DataParameter<Direction> HEADING = EntityDataManager.createKey(CablecarEntity.class, DataSerializers.DIRECTION);
  17.    
  18.     public static final float movementSpeed = 1f / 20f;
  19.    
  20.     public CablecarEntity(EntityType<?> entityTypeIn, World worldIn) {
  21.         super(entityTypeIn, worldIn);
  22.         this.setNoGravity(true);
  23.         this.noClip = true;
  24.     }
  25.  
  26.     @Override
  27.     protected void registerData() {
  28.         dataManager.register(HEADING, Direction.NORTH);
  29.     }
  30.  
  31.     public void setHeading(Direction heading) {
  32.         dataManager.set(HEADING, heading);
  33.     }
  34.  
  35.     @Override
  36.     public void tick() {
  37.         super.tick();
  38.  
  39.         float offsetX = 0f;
  40.         float offsetZ = 0f;
  41.  
  42.         switch (this.dataManager.get(HEADING)) {
  43.             case NORTH: offsetZ = -1f; break;
  44.             case SOUTH: offsetZ = 1f; break;
  45.             case WEST: offsetX = -1f; break;
  46.             case EAST: offsetX = 1f; break;
  47.         }
  48.        
  49.         this.setMotion(offsetX * movementSpeed, 0, offsetZ * movementSpeed);
  50.         this.move(MoverType.SELF, this.getMotion());
  51.     }
  52.  
  53.     @Override
  54.     protected void readAdditional(CompoundNBT compound) {
  55.         this.dataManager.set(HEADING, Direction.byIndex(compound.getInt("heading")));
  56.     }
  57.  
  58.     @Override
  59.     protected void writeAdditional(CompoundNBT compound) {
  60.         compound.putInt("heading", this.dataManager.get(HEADING).getIndex());
  61.     }
  62.  
  63.     @Override
  64.     public IPacket<?> createSpawnPacket() {
  65.         return NetworkHooks.getEntitySpawningPacket(this);
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement