forked from GeyserMC/Geyser
		
	Work on a lot more entity flags
This commit is contained in:
		
							parent
							
								
									e4c2f79bc5
								
							
						
					
					
						commit
						7bd53c95c3
					
				
					 17 changed files with 583 additions and 22 deletions
				
			
		|  | @ -64,7 +64,7 @@ public class LivingEntity extends Entity { | ||||||
|                 metadata.put(EntityData.POTION_COLOR, (int) entityMetadata.getValue()); |                 metadata.put(EntityData.POTION_COLOR, (int) entityMetadata.getValue()); | ||||||
|                 break; |                 break; | ||||||
|             case 10: |             case 10: | ||||||
|                 metadata.put(EntityData.POTION_AMBIENT, (boolean) entityMetadata.getValue()); |                 metadata.put(EntityData.POTION_AMBIENT, (byte) ((boolean) entityMetadata.getValue() ? 1 : 0)); | ||||||
|                 break; |                 break; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,48 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.animal; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class BeeEntity extends AnimalEntity { | ||||||
|  | 
 | ||||||
|  |     public BeeEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 16) { | ||||||
|  |             byte xd = (byte) entityMetadata.getValue(); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.ANGRY, (xd & 0x02) == 0x02); | ||||||
|  |         } | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,54 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.animal; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityData; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class FoxEntity extends AnimalEntity { | ||||||
|  | 
 | ||||||
|  |     public FoxEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 16) { | ||||||
|  |             metadata.put(EntityData.VARIANT, (int) entityMetadata.getValue()); | ||||||
|  |         } | ||||||
|  |         if (entityMetadata.getId() == 17) { | ||||||
|  |             byte xd = (byte) entityMetadata.getValue(); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.SITTING, (xd & 0x01) == 0x01); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.SNEAKING, (xd & 0x04) == 0x04); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.SLEEPING, (xd & 0x20) == 0x20); | ||||||
|  |         } | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,47 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.animal; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class OcelotEntity extends AnimalEntity { | ||||||
|  | 
 | ||||||
|  |     public OcelotEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 16) { | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.TRUSTING, (boolean) entityMetadata.getValue()); | ||||||
|  |         } | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,49 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.animal; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class PandaEntity extends AnimalEntity { | ||||||
|  | 
 | ||||||
|  |     public PandaEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 21) { | ||||||
|  |             byte xd = (byte) entityMetadata.getValue(); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.SNEEZING, (xd & 0x02) == 0x02); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.EATING, (xd & 0x04) == 0x04); | ||||||
|  |         } | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,47 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.animal; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class PigEntity extends AnimalEntity { | ||||||
|  | 
 | ||||||
|  |     public PigEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 16) { | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.SADDLED, (boolean) entityMetadata.getValue()); | ||||||
|  |         } | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,47 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.animal; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class PolarBearEntity extends AnimalEntity { | ||||||
|  | 
 | ||||||
|  |     public PolarBearEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 16) { | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.STANDING, (boolean) entityMetadata.getValue()); | ||||||
|  |         } | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -27,6 +27,7 @@ package org.geysermc.connector.entity.living.animal.horse; | ||||||
| 
 | 
 | ||||||
| import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
| import com.nukkitx.math.vector.Vector3f; | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
| import org.geysermc.connector.entity.living.animal.AnimalEntity; | import org.geysermc.connector.entity.living.animal.AnimalEntity; | ||||||
| import org.geysermc.connector.entity.type.EntityType; | import org.geysermc.connector.entity.type.EntityType; | ||||||
| import org.geysermc.connector.network.session.GeyserSession; | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | @ -39,6 +40,12 @@ public class AbstractHorseEntity extends AnimalEntity { | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 16) { | ||||||
|  |             byte xd = (byte) entityMetadata.getValue(); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.TAMED, (xd & 0x02) == 0x02); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.SADDLED, (xd & 0x04) == 0x04); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.EATING, (xd & 0x10) == 0x10); | ||||||
|  |         } | ||||||
|         super.updateBedrockMetadata(entityMetadata, session); |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -39,9 +39,9 @@ public class ChestedHorseEntity extends AbstractHorseEntity { | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|         // https://wiki.vg/Entity_metadata#Horse |         if (entityMetadata.getId() == 18) { | ||||||
|         metadata.getFlags().setFlag(EntityFlag.CHESTED, chestplate != null && chestplate.getId() != 0); |             metadata.getFlags().setFlag(EntityFlag.CHESTED, (boolean) entityMetadata.getValue()); | ||||||
| 
 |         } | ||||||
|         super.updateBedrockMetadata(entityMetadata, session); |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,51 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.animal.tameable; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityData; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class CatEntity extends TameableEntity { | ||||||
|  | 
 | ||||||
|  |     public CatEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 18) { | ||||||
|  |             metadata.put(EntityData.VARIANT, (int) entityMetadata.getValue()); | ||||||
|  |         } | ||||||
|  |         if (entityMetadata.getId() == 21) { | ||||||
|  |             // FIXME: Colors the whole animal instead of just collar | ||||||
|  |             metadata.put(EntityData.COLOR, (byte) (int) entityMetadata.getValue()); | ||||||
|  |         } | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -23,15 +23,29 @@ | ||||||
|  * @link https://github.com/GeyserMC/Geyser |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package org.geysermc.connector.entity.living.animal; | package org.geysermc.connector.entity.living.animal.tameable; | ||||||
| 
 | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
| import com.nukkitx.math.vector.Vector3f; | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
| import org.geysermc.connector.entity.living.animal.AnimalEntity; | import org.geysermc.connector.entity.living.animal.AnimalEntity; | ||||||
| import org.geysermc.connector.entity.type.EntityType; | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
| 
 | 
 | ||||||
| public class TameableEntity extends AnimalEntity { | public class TameableEntity extends AnimalEntity { | ||||||
| 
 | 
 | ||||||
|     public TameableEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { |     public TameableEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|         super(entityId, geyserId, entityType, position, motion, rotation); |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 16) { | ||||||
|  |             byte xd = (byte) entityMetadata.getValue(); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.SITTING, (xd & 0x01) == 0x01); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.ANGRY, (xd & 0x02) == 0x02); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.TAMED, (xd & 0x04) == 0x04); | ||||||
|  |         } | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | @ -0,0 +1,48 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.animal.tameable; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityData; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class WolfEntity extends TameableEntity { | ||||||
|  | 
 | ||||||
|  |     public WolfEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 19) { | ||||||
|  |             // FIXME: Colors the whole animal instead of just collar | ||||||
|  |             // metadata.put(EntityData.COLOR, (byte) (int) entityMetadata.getValue()); | ||||||
|  |         } | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,49 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.monster; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class BlazeEntity extends MonsterEntity { | ||||||
|  | 
 | ||||||
|  |     public BlazeEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 15) { | ||||||
|  |             byte xd = (byte) entityMetadata.getValue(); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.ON_FIRE, (xd & 0x01) == 0x01); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,51 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.monster; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class CreeperEntity extends MonsterEntity { | ||||||
|  | 
 | ||||||
|  |     public CreeperEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 16) { | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.POWERED, (boolean) entityMetadata.getValue()); | ||||||
|  |         } | ||||||
|  |         if (entityMetadata.getId() == 17) { | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.IGNITED, (boolean) entityMetadata.getValue()); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,49 @@ | ||||||
|  | /* | ||||||
|  |  * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in | ||||||
|  |  * all copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |  * THE SOFTWARE. | ||||||
|  |  * | ||||||
|  |  * @author GeyserMC | ||||||
|  |  * @link https://github.com/GeyserMC/Geyser | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | package org.geysermc.connector.entity.living.monster; | ||||||
|  | 
 | ||||||
|  | import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata; | ||||||
|  | import com.nukkitx.math.vector.Vector3f; | ||||||
|  | import com.nukkitx.protocol.bedrock.data.EntityFlag; | ||||||
|  | import org.geysermc.connector.entity.type.EntityType; | ||||||
|  | import org.geysermc.connector.network.session.GeyserSession; | ||||||
|  | 
 | ||||||
|  | public class SpiderEntity extends MonsterEntity { | ||||||
|  | 
 | ||||||
|  |     public SpiderEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) { | ||||||
|  |         super(entityId, geyserId, entityType, position, motion, rotation); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) { | ||||||
|  |         if (entityMetadata.getId() == 15) { | ||||||
|  |             byte xd = (byte) entityMetadata.getValue(); | ||||||
|  |             metadata.getFlags().setFlag(EntityFlag.WALL_CLIMBING, (xd & 0x01) == 0x01); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         super.updateBedrockMetadata(entityMetadata, session); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -28,14 +28,14 @@ package org.geysermc.connector.entity.type; | ||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
| import org.geysermc.connector.entity.*; | import org.geysermc.connector.entity.*; | ||||||
| import org.geysermc.connector.entity.living.*; | import org.geysermc.connector.entity.living.*; | ||||||
| import org.geysermc.connector.entity.living.animal.AnimalEntity; | import org.geysermc.connector.entity.living.animal.*; | ||||||
| import org.geysermc.connector.entity.living.animal.TameableEntity; | import org.geysermc.connector.entity.living.animal.tameable.CatEntity; | ||||||
|  | import org.geysermc.connector.entity.living.animal.tameable.TameableEntity; | ||||||
| import org.geysermc.connector.entity.living.animal.horse.AbstractHorseEntity; | import org.geysermc.connector.entity.living.animal.horse.AbstractHorseEntity; | ||||||
| import org.geysermc.connector.entity.living.animal.RabbitEntity; |  | ||||||
| import org.geysermc.connector.entity.living.animal.SheepEntity; |  | ||||||
| import org.geysermc.connector.entity.living.animal.horse.ChestedHorseEntity; | import org.geysermc.connector.entity.living.animal.horse.ChestedHorseEntity; | ||||||
| import org.geysermc.connector.entity.living.animal.horse.HorseEntity; | import org.geysermc.connector.entity.living.animal.horse.HorseEntity; | ||||||
| import org.geysermc.connector.entity.living.animal.horse.LlamaEntity; | import org.geysermc.connector.entity.living.animal.horse.LlamaEntity; | ||||||
|  | import org.geysermc.connector.entity.living.animal.tameable.WolfEntity; | ||||||
| import org.geysermc.connector.entity.living.monster.*; | import org.geysermc.connector.entity.living.monster.*; | ||||||
| import org.geysermc.connector.entity.living.monster.raid.AbstractIllagerEntity; | import org.geysermc.connector.entity.living.monster.raid.AbstractIllagerEntity; | ||||||
| import org.geysermc.connector.entity.living.monster.raid.RaidParticipantEntity; | import org.geysermc.connector.entity.living.monster.raid.RaidParticipantEntity; | ||||||
|  | @ -46,9 +46,9 @@ public enum EntityType { | ||||||
| 
 | 
 | ||||||
|     CHICKEN(AnimalEntity.class, 10, 0.7f, 0.4f), |     CHICKEN(AnimalEntity.class, 10, 0.7f, 0.4f), | ||||||
|     COW(AnimalEntity.class, 11, 1.4f, 0.9f), |     COW(AnimalEntity.class, 11, 1.4f, 0.9f), | ||||||
|     PIG(AnimalEntity.class, 12, 0.9f), |     PIG(PigEntity.class, 12, 0.9f), | ||||||
|     SHEEP(SheepEntity.class, 13, 1.3f, 0.9f), |     SHEEP(SheepEntity.class, 13, 1.3f, 0.9f), | ||||||
|     WOLF(AnimalEntity.class, 14, 0.85f, 0.6f), |     WOLF(WolfEntity.class, 14, 0.85f, 0.6f), | ||||||
|     VILLAGER(AbstractMerchantEntity.class, 15, 1.8f, 0.6f, 0.6f, 1.62f), |     VILLAGER(AbstractMerchantEntity.class, 15, 1.8f, 0.6f, 0.6f, 1.62f), | ||||||
|     MOOSHROOM(AnimalEntity.class, 16, 1.4f, 0.9f), |     MOOSHROOM(AnimalEntity.class, 16, 1.4f, 0.9f), | ||||||
|     SQUID(WaterEntity.class, 17, 0.8f), |     SQUID(WaterEntity.class, 17, 0.8f), | ||||||
|  | @ -56,21 +56,21 @@ public enum EntityType { | ||||||
|     BAT(AmbientEntity.class, 19, 0.9f, 0.5f), |     BAT(AmbientEntity.class, 19, 0.9f, 0.5f), | ||||||
|     IRON_GOLEM(GolemEntity.class, 20, 2.7f, 1.4f), |     IRON_GOLEM(GolemEntity.class, 20, 2.7f, 1.4f), | ||||||
|     SNOW_GOLEM(GolemEntity.class, 21, 1.9f, 0.7f), |     SNOW_GOLEM(GolemEntity.class, 21, 1.9f, 0.7f), | ||||||
|     OCELOT(AgeableEntity.class, 22, 0.35f, 0.3f), |     OCELOT(OcelotEntity.class, 22, 0.35f, 0.3f), | ||||||
|     HORSE(HorseEntity.class, 23, 1.6f, 1.3965f), |     HORSE(HorseEntity.class, 23, 1.6f, 1.3965f), | ||||||
|     DONKEY(ChestedHorseEntity.class, 24, 1.6f, 1.3965f), |     DONKEY(ChestedHorseEntity.class, 24, 1.6f, 1.3965f), | ||||||
|     MULE(ChestedHorseEntity.class, 25, 1.6f, 1.3965f), |     MULE(ChestedHorseEntity.class, 25, 1.6f, 1.3965f), | ||||||
|     SKELETON_HORSE(AbstractHorseEntity.class, 26, 1.6f, 1.3965f), |     SKELETON_HORSE(AbstractHorseEntity.class, 26, 1.6f, 1.3965f), | ||||||
|     ZOMBIE_HORSE(AbstractHorseEntity.class, 27, 1.6f, 1.3965f), |     ZOMBIE_HORSE(AbstractHorseEntity.class, 27, 1.6f, 1.3965f), | ||||||
|     POLAR_BEAR(AnimalEntity.class, 28, 1.4f, 1.3f), |     POLAR_BEAR(PolarBearEntity.class, 28, 1.4f, 1.3f), | ||||||
|     LLAMA(LlamaEntity.class, 29, 1.87f, 0.9f), |     LLAMA(LlamaEntity.class, 29, 1.87f, 0.9f), | ||||||
|     TRADER_LLAMA(LlamaEntity.class, 29, 1.187f, 0.9f), |     TRADER_LLAMA(LlamaEntity.class, 29, 1.187f, 0.9f), | ||||||
|     PARROT(TameableEntity.class, 30, 0.9f, 0.5f), |     PARROT(TameableEntity.class, 30, 0.9f, 0.5f), | ||||||
|     DOLPHIN(WaterEntity.class, 31, 0.6f, 0.9f), |     DOLPHIN(WaterEntity.class, 31, 0.6f, 0.9f), | ||||||
|     ZOMBIE(ZombieEntity.class, 32, 1.8f, 0.6f, 0.6f, 1.62f), |     ZOMBIE(ZombieEntity.class, 32, 1.8f, 0.6f, 0.6f, 1.62f), | ||||||
|     CREEPER(MonsterEntity.class, 33, 1.7f, 0.6f, 0.6f, 1.62f), |     CREEPER(CreeperEntity.class, 33, 1.7f, 0.6f, 0.6f, 1.62f), | ||||||
|     SKELETON(AbstractSkeletonEntity.class, 34, 1.8f, 0.6f, 0.6f, 1.62f), |     SKELETON(AbstractSkeletonEntity.class, 34, 1.8f, 0.6f, 0.6f, 1.62f), | ||||||
|     SPIDER(MonsterEntity.class, 35, 0.9f, 1.4f, 1.4f, 1f), |     SPIDER(SpiderEntity.class, 35, 0.9f, 1.4f, 1.4f, 1f), | ||||||
|     ZOMBIE_PIGMAN(MonsterEntity.class, 36, 1.8f, 0.6f, 0.6f, 1.62f), |     ZOMBIE_PIGMAN(MonsterEntity.class, 36, 1.8f, 0.6f, 0.6f, 1.62f), | ||||||
|     SLIME(InsentientEntity.class, 37, 0.51f), |     SLIME(InsentientEntity.class, 37, 0.51f), | ||||||
|     ENDERMAN(MonsterEntity.class, 38, 2.9f, 0.6f), |     ENDERMAN(MonsterEntity.class, 38, 2.9f, 0.6f), | ||||||
|  | @ -78,13 +78,13 @@ public enum EntityType { | ||||||
|     CAVE_SPIDER(MonsterEntity.class, 40, 0.5f, 0.7f), |     CAVE_SPIDER(MonsterEntity.class, 40, 0.5f, 0.7f), | ||||||
|     GHAST(FlyingEntity.class, 41, 4.0f), |     GHAST(FlyingEntity.class, 41, 4.0f), | ||||||
|     MAGMA_CUBE(InsentientEntity.class, 42, 0.51f), |     MAGMA_CUBE(InsentientEntity.class, 42, 0.51f), | ||||||
|     BLAZE(MonsterEntity.class, 43, 1.8f, 0.6f), |     BLAZE(BlazeEntity.class, 43, 1.8f, 0.6f), | ||||||
|     ZOMBIE_VILLAGER(ZombieEntity.class, 44, 1.8f, 0.6f, 0.6f, 1.62f), |     ZOMBIE_VILLAGER(ZombieEntity.class, 44, 1.8f, 0.6f, 0.6f, 1.62f), | ||||||
|     WITCH(RaidParticipantEntity.class, 45, 1.8f, 0.6f, 0.6f, 1.62f), |     WITCH(RaidParticipantEntity.class, 45, 1.8f, 0.6f, 0.6f, 1.62f), | ||||||
|     STRAY(AbstractSkeletonEntity.class, 46, 1.8f, 0.6f, 0.6f, 1.62f), |     STRAY(AbstractSkeletonEntity.class, 46, 1.8f, 0.6f, 0.6f, 1.62f), | ||||||
|     HUSK(ZombieEntity.class, 47, 1.8f, 0.6f, 0.6f, 1.62f), |     HUSK(ZombieEntity.class, 47, 1.8f, 0.6f, 0.6f, 1.62f), | ||||||
|     WITHER_SKELETON(AbstractSkeletonEntity.class, 48, 2.4f, 0.7f), |     WITHER_SKELETON(AbstractSkeletonEntity.class, 48, 2.4f, 0.7f), | ||||||
|     GUARDIAN(MonsterEntity.class, 49, 0.85f), |     GUARDIAN(GuardianEntity.class, 49, 0.85f), | ||||||
|     ELDER_GUARDIAN(GuardianEntity.class, 50, 1.9975f), |     ELDER_GUARDIAN(GuardianEntity.class, 50, 1.9975f), | ||||||
|     NPC(PlayerEntity.class, 51, 1.8f, 0.6f, 0.6f, 1.62f), |     NPC(PlayerEntity.class, 51, 1.8f, 0.6f, 0.6f, 1.62f), | ||||||
|     WITHER(MonsterEntity.class, 52, 3.5f, 0.9f), |     WITHER(MonsterEntity.class, 52, 3.5f, 0.9f), | ||||||
|  | @ -112,7 +112,7 @@ public enum EntityType { | ||||||
|     FIREWORK_ROCKET(Entity.class, 72, 0f), |     FIREWORK_ROCKET(Entity.class, 72, 0f), | ||||||
|     TRIDENT(ArrowEntity.class, 73, 0f), |     TRIDENT(ArrowEntity.class, 73, 0f), | ||||||
|     TURTLE(AnimalEntity.class, 74, 0.4f, 1.2f), |     TURTLE(AnimalEntity.class, 74, 0.4f, 1.2f), | ||||||
|     CAT(TameableEntity.class, 75, 0.35f, 0.3f), |     CAT(CatEntity.class, 75, 0.35f, 0.3f), | ||||||
|     SHULKER_BULLET(Entity.class, 76, 0f), |     SHULKER_BULLET(Entity.class, 76, 0f), | ||||||
|     FISHING_BOBBER(Entity.class, 77, 0f), |     FISHING_BOBBER(Entity.class, 77, 0f), | ||||||
|     CHALKBOARD(Entity.class, 78, 0f), |     CHALKBOARD(Entity.class, 78, 0f), | ||||||
|  | @ -149,9 +149,9 @@ public enum EntityType { | ||||||
|     DROWNED(ZombieEntity.class, 110, 1.95f, 0.6f), |     DROWNED(ZombieEntity.class, 110, 1.95f, 0.6f), | ||||||
|     TROPICAL_FISH(AbstractFishEntity.class, 111, 0.6f, 0.6f), |     TROPICAL_FISH(AbstractFishEntity.class, 111, 0.6f, 0.6f), | ||||||
|     COD(AbstractFishEntity.class, 112, 0.25f, 0.5f), |     COD(AbstractFishEntity.class, 112, 0.25f, 0.5f), | ||||||
|     PANDA(AnimalEntity.class, 113, 1.25f, 1.125f, 1.825f), |     PANDA(PandaEntity.class, 113, 1.25f, 1.125f, 1.825f), | ||||||
|     FOX(AnimalEntity.class, 121, 0.5f, 1.25f), |     FOX(FoxEntity.class, 121, 0.5f, 1.25f), | ||||||
|     BEE(InsentientEntity.class, 122, 0.6f, 0.6f); |     BEE(BeeEntity.class, 122, 0.6f, 0.6f); | ||||||
| 
 | 
 | ||||||
|     private Class<? extends Entity> entityClass; |     private Class<? extends Entity> entityClass; | ||||||
|     private final int type; |     private final int type; | ||||||
|  |  | ||||||
|  | @ -157,7 +157,7 @@ public class MessageUtils { | ||||||
|                 base += "r"; |                 base += "r"; | ||||||
|                 break; |                 break; | ||||||
|             default: |             default: | ||||||
|                 break; |                 return ""; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         return base; |         return base; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue