Guest User

ITileEntityChest

a guest
Apr 2nd, 2016
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.25 KB | None | 0 0
  1. package destinyspork.appliedautomation.tileentity;
  2.  
  3. import com.google.common.collect.ImmutableMap;
  4.  
  5. import destinyspork.appliedautomation.proxy.ClientProxy;
  6. import destinyspork.appliedautomation.proxy.ServerProxy;
  7. import net.minecraft.tileentity.TileEntity;
  8. import net.minecraft.util.ResourceLocation;
  9. import net.minecraftforge.client.model.animation.Animation;
  10. import net.minecraftforge.client.model.animation.Event;
  11. import net.minecraftforge.client.model.animation.IAnimationProvider;
  12. import net.minecraftforge.client.model.animation.ITimeValue;
  13. import net.minecraftforge.client.model.animation.TimeValues.VariableValue;
  14. import net.minecraftforge.common.model.animation.IAnimationStateMachine;
  15.  
  16. public class ITileEntityChest extends TileEntity implements IAnimationProvider{
  17.  
  18.  
  19.     private final IAnimationStateMachine asm;
  20.     private final VariableValue cycleLength = new VariableValue(4);
  21.     private final VariableValue clickTime = new VariableValue(Float.NEGATIVE_INFINITY);
  22.  
  23.     public ITileEntityChest() {
  24.         asm = ClientProxy.load(new ResourceLocation("appliedautomation", "asms/block/engine.json"),
  25.                 ImmutableMap.<String, ITimeValue> of("cycle_length", cycleLength, "click_time", clickTime));
  26.     }
  27.  
  28.     public void handleEvents(float time, Iterable<Event> pastEvents) {
  29.         for (Event event : pastEvents) {
  30.             System.out.println("Event: " + event.event() + " " + event.offset() + " " + getPos() + " " + time);
  31.             System.out.println(asm.currentState());
  32.         }
  33.     }
  34.  
  35.     @Override
  36.     public boolean hasFastRenderer() {
  37.         return true;
  38.     }
  39.  
  40.     public void click(boolean sneaking) {
  41.         if (asm != null) {
  42.             if (sneaking) {
  43.                 cycleLength.setValue(6 - cycleLength.apply(0));
  44.             }
  45.             else if (asm.currentState().equals("default")) {
  46.                 float time = Animation.getWorldTime(getWorld(), Animation.getPartialTickTime());
  47.                 clickTime.setValue(time);
  48.                 asm.transition("starting");
  49.             } else if (asm.currentState().equals("moving")) {
  50.                 clickTime.setValue(Animation.getWorldTime(getWorld(), Animation.getPartialTickTime()));
  51.                 asm.transition("stopping");
  52.             }
  53.         }
  54.     }
  55.    
  56.  
  57.     @Override
  58.     public IAnimationStateMachine asm() {
  59.         // TODO Auto-generated method stub
  60.         return asm;
  61.     }
  62.  
  63. }
  64.  
  65. //This is called ITileEntityChest so it does not conflict in any way with the vanilla one.
Advertisement
Add Comment
Please, Sign In to add comment