001/* 002 * Trident - A Multithreaded Server Alternative 003 * Copyright 2014 The TridentSDK Team 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018package net.tridentsdk.server.entity.living; 019 020import net.tridentsdk.base.Position; 021import net.tridentsdk.entity.living.Horse; 022import net.tridentsdk.entity.living.Player; 023import net.tridentsdk.entity.types.EntityType; 024import net.tridentsdk.entity.types.HorseType; 025import net.tridentsdk.entity.types.HorseVariant; 026import net.tridentsdk.event.entity.EntityDamageEvent; 027import net.tridentsdk.inventory.Inventory; 028import net.tridentsdk.inventory.Item; 029import net.tridentsdk.server.data.MetadataType; 030import net.tridentsdk.server.data.ProtocolMetadata; 031import net.tridentsdk.server.entity.TridentBreedable; 032import net.tridentsdk.server.player.TridentPlayer; 033 034import java.util.UUID; 035 036public class TridentHorse extends TridentBreedable implements Horse { 037 private volatile int data; 038 private final HorseType breed; 039 private volatile int colorData; 040 private volatile UUID owner; 041 private volatile int temper; 042 private volatile int armorType; 043 044 public TridentHorse(UUID id, Position spawnLocation, HorseType breed) { 045 super(id, spawnLocation); 046 047 this.data = 0; 048 this.breed = breed; 049 this.colorData = 0; 050 this.temper = 0; 051 this.armorType = 0; 052 } 053 054 @Override 055 protected void doEncodeMeta(ProtocolMetadata protocolMeta) { 056 protocolMeta.setMeta(16, MetadataType.INT, data); 057 protocolMeta.setMeta(19, MetadataType.BYTE, (byte) breed.id()); 058 protocolMeta.setMeta(20, MetadataType.INT, colorData); 059 protocolMeta.setMeta(21, MetadataType.STRING, 060 (owner == null) ? "" : TridentPlayer.getPlayer(owner).name()); 061 protocolMeta.setMeta(22, MetadataType.INT, armorType); 062 } 063 064 @Override 065 public HorseType breed() { 066 return breed; 067 } 068 069 @Override 070 public boolean isGrazing() { 071 return false; 072 } 073 074 @Override 075 public int temper() { 076 return temper; 077 } 078 079 @Override 080 public boolean hasChest() { 081 return false; 082 } 083 084 @Override 085 public HorseVariant variant() { 086 return null; 087 } 088 089 @Override 090 public boolean isSitting() { 091 return false; 092 } 093 094 @Override 095 public Inventory window() { 096 return null; 097 } 098 099 @Override 100 public Item heldItem() { 101 return null; 102 } 103 104 @Override 105 public void setHeldItem(Item item) { 106 107 } 108 109 @Override 110 public boolean isSaddled() { 111 return false; 112 } 113 114 @Override 115 public void setSaddled(boolean saddled) { 116 117 } 118 119 @Override 120 public boolean isTamed() { 121 return false; 122 } 123 124 @Override 125 public UUID owner() { 126 return null; 127 } 128 129 @Override 130 public EntityDamageEvent lastDamageEvent() { 131 return null; 132 } 133 134 @Override 135 public Player lastPlayerDamager() { 136 return null; 137 } 138 139 @Override 140 public EntityType type() { 141 return EntityType.HORSE; 142 } 143}