forked from GeyserMC/Geyser
		
	Merge branch 'master' into block-entities
This commit is contained in:
		
						commit
						6bb478bda4
					
				
					 157 changed files with 1383 additions and 257 deletions
				
			
		
							
								
								
									
										2
									
								
								LICENSE
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
										
									
									
									
								
							| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
The MIT License
 | 
					The MIT License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,8 @@ Please note, Geyser is **not** (currently) a plugin. Watch the video below or ta
 | 
				
			||||||
## Compiling
 | 
					## Compiling
 | 
				
			||||||
1. Clone the repo to your computer
 | 
					1. Clone the repo to your computer
 | 
				
			||||||
2. [Install Maven](https://maven.apache.org/install.html)
 | 
					2. [Install Maven](https://maven.apache.org/install.html)
 | 
				
			||||||
3. Navigate to the Geyser root directory and run `mvn clean install`
 | 
					3. Navigate to the Geyser root directory and run `git submodule update --init --recursive`. This downloads all the needed submodules for Geyser and is a crucial step in this process.
 | 
				
			||||||
 | 
					4. Run `mvn clean install` and locate to the `target` folder.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Contributing
 | 
					## Contributing
 | 
				
			||||||
Any contributions are appreciated. Please feel free to reach out to us on [Discord](http://discord.geysermc.org/) if
 | 
					Any contributions are appreciated. Please feel free to reach out to us on [Discord](http://discord.geysermc.org/) if
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -30,8 +30,11 @@ import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
import com.nukkitx.protocol.bedrock.data.EntityData;
 | 
					import com.nukkitx.protocol.bedrock.data.EntityData;
 | 
				
			||||||
import com.nukkitx.protocol.bedrock.data.ItemData;
 | 
					import com.nukkitx.protocol.bedrock.data.ItemData;
 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.MobArmorEquipmentPacket;
 | 
					import com.nukkitx.protocol.bedrock.packet.MobArmorEquipmentPacket;
 | 
				
			||||||
 | 
					import com.nukkitx.protocol.bedrock.packet.MobEquipmentPacket;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import lombok.Getter;
 | 
					import lombok.Getter;
 | 
				
			||||||
import lombok.Setter;
 | 
					import lombok.Setter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -77,6 +80,11 @@ public class LivingEntity extends Entity {
 | 
				
			||||||
        armorEquipmentPacket.setLeggings(leggings);
 | 
					        armorEquipmentPacket.setLeggings(leggings);
 | 
				
			||||||
        armorEquipmentPacket.setBoots(boots);
 | 
					        armorEquipmentPacket.setBoots(boots);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        MobEquipmentPacket mobEquipmentPacket = new MobEquipmentPacket();
 | 
				
			||||||
 | 
					        mobEquipmentPacket.setRuntimeEntityId(geyserId);
 | 
				
			||||||
 | 
					        mobEquipmentPacket.setItem(hand);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        session.getUpstream().sendPacket(armorEquipmentPacket);
 | 
					        session.getUpstream().sendPacket(armorEquipmentPacket);
 | 
				
			||||||
 | 
					        session.getUpstream().sendPacket(mobEquipmentPacket);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -27,6 +27,7 @@ package org.geysermc.connector.entity.living;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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.EntityData;
 | 
				
			||||||
import com.nukkitx.protocol.bedrock.data.EntityFlag;
 | 
					import com.nukkitx.protocol.bedrock.data.EntityFlag;
 | 
				
			||||||
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;
 | 
				
			||||||
| 
						 | 
					@ -40,7 +41,11 @@ public class AgeableEntity extends CreatureEntity {
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) {
 | 
					    public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) {
 | 
				
			||||||
        if (entityMetadata.getId() == 15) {
 | 
					        if (entityMetadata.getId() == 15) {
 | 
				
			||||||
            metadata.getFlags().setFlag(EntityFlag.BABY, (boolean) entityMetadata.getValue());
 | 
					            boolean isBaby = (boolean) entityMetadata.getValue();
 | 
				
			||||||
 | 
					            if (isBaby) {
 | 
				
			||||||
 | 
					                metadata.put(EntityData.SCALE, .55f);
 | 
				
			||||||
 | 
					                metadata.getFlags().setFlag(EntityFlag.BABY, true);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        super.updateBedrockMetadata(entityMetadata, session);
 | 
					        super.updateBedrockMetadata(entityMetadata, session);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,52 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata;
 | 
				
			||||||
 | 
					import com.github.steveice10.mc.protocol.data.game.entity.metadata.MetadataType;
 | 
				
			||||||
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
 | 
					import com.nukkitx.protocol.bedrock.data.EntityData;
 | 
				
			||||||
 | 
					import org.geysermc.connector.entity.LivingEntity;
 | 
				
			||||||
 | 
					import org.geysermc.connector.entity.type.EntityType;
 | 
				
			||||||
 | 
					import org.geysermc.connector.network.session.GeyserSession;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class ArmorStandEntity extends LivingEntity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ArmorStandEntity(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.getType() == MetadataType.BYTE) {
 | 
				
			||||||
 | 
					            byte xd = (byte) entityMetadata.getValue();
 | 
				
			||||||
 | 
					            if((xd & 0x01) == 0x01) {
 | 
				
			||||||
 | 
					                metadata.put(EntityData.SCALE, .55f);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        super.updateBedrockMetadata(entityMetadata, session);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,9 +23,10 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living;
 | 
					package org.geysermc.connector.entity.living.animal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3f;
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
 | 
					import org.geysermc.connector.entity.living.AgeableEntity;
 | 
				
			||||||
import org.geysermc.connector.entity.type.EntityType;
 | 
					import org.geysermc.connector.entity.type.EntityType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class AnimalEntity extends AgeableEntity {
 | 
					public class AnimalEntity extends AgeableEntity {
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,53 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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 RabbitEntity extends AnimalEntity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public RabbitEntity(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) {
 | 
				
			||||||
 | 
					        super.updateBedrockMetadata(entityMetadata, session);
 | 
				
			||||||
 | 
					        if (entityMetadata.getId() == 15) {
 | 
				
			||||||
 | 
					            metadata.put(EntityData.SCALE, .55f);
 | 
				
			||||||
 | 
					            boolean isBaby = (boolean) entityMetadata.getValue();
 | 
				
			||||||
 | 
					            if(isBaby) {
 | 
				
			||||||
 | 
					                metadata.put(EntityData.SCALE, .35f);
 | 
				
			||||||
 | 
					                metadata.getFlags().setFlag(EntityFlag.BABY, true);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 SheepEntity extends AnimalEntity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public SheepEntity(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.SHEARED, (xd & 0x10) == 0x10);
 | 
				
			||||||
 | 
					            metadata.put(EntityData.COLOR, xd);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        super.updateBedrockMetadata(entityMetadata, session);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,9 +23,10 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living;
 | 
					package org.geysermc.connector.entity.living.animal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3f;
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
 | 
					import org.geysermc.connector.entity.living.animal.AnimalEntity;
 | 
				
			||||||
import org.geysermc.connector.entity.type.EntityType;
 | 
					import org.geysermc.connector.entity.type.EntityType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class TameableEntity extends AnimalEntity {
 | 
					public class TameableEntity extends AnimalEntity {
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,11 +23,12 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living;
 | 
					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.EntityData;
 | 
					
 | 
				
			||||||
 | 
					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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living;
 | 
					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;
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,12 +23,11 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living.horse;
 | 
					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.EntityData;
 | 
					import com.nukkitx.protocol.bedrock.data.EntityData;
 | 
				
			||||||
import org.geysermc.connector.entity.living.AbstractHorseEntity;
 | 
					 | 
				
			||||||
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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,10 +23,9 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living.horse;
 | 
					package org.geysermc.connector.entity.living.animal.horse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3f;
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
import org.geysermc.connector.entity.living.ChestedHorseEntity;
 | 
					 | 
				
			||||||
import org.geysermc.connector.entity.type.EntityType;
 | 
					import org.geysermc.connector.entity.type.EntityType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class LlamaEntity extends ChestedHorseEntity {
 | 
					public class LlamaEntity extends ChestedHorseEntity {
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living;
 | 
					package org.geysermc.connector.entity.living.monster;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3f;
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
import org.geysermc.connector.entity.type.EntityType;
 | 
					import org.geysermc.connector.entity.type.EntityType;
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,6 @@ import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadat
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3f;
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
import com.nukkitx.protocol.bedrock.data.EntityData;
 | 
					import com.nukkitx.protocol.bedrock.data.EntityData;
 | 
				
			||||||
import org.geysermc.connector.entity.Entity;
 | 
					import org.geysermc.connector.entity.Entity;
 | 
				
			||||||
import org.geysermc.connector.entity.living.MonsterEntity;
 | 
					 | 
				
			||||||
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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,9 +23,10 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living;
 | 
					package org.geysermc.connector.entity.living.monster;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3f;
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
 | 
					import org.geysermc.connector.entity.living.CreatureEntity;
 | 
				
			||||||
import org.geysermc.connector.entity.type.EntityType;
 | 
					import org.geysermc.connector.entity.type.EntityType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MonsterEntity extends CreatureEntity {
 | 
					public class MonsterEntity extends CreatureEntity {
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -25,13 +25,28 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living.monster;
 | 
					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.math.vector.Vector3f;
 | 
				
			||||||
import org.geysermc.connector.entity.living.MonsterEntity;
 | 
					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.entity.type.EntityType;
 | 
				
			||||||
 | 
					import org.geysermc.connector.network.session.GeyserSession;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class ZombieEntity extends MonsterEntity {
 | 
					public class ZombieEntity extends MonsterEntity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public ZombieEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) {
 | 
					    public ZombieEntity(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() == 15) {
 | 
				
			||||||
 | 
					            boolean isBaby = (boolean) entityMetadata.getValue();
 | 
				
			||||||
 | 
					            if (isBaby) {
 | 
				
			||||||
 | 
					                metadata.put(EntityData.SCALE, .55f);
 | 
				
			||||||
 | 
					                metadata.getFlags().setFlag(EntityFlag.BABY, true);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        super.updateBedrockMetadata(entityMetadata, session);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living;
 | 
					package org.geysermc.connector.entity.living.monster.raid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3f;
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
import org.geysermc.connector.entity.type.EntityType;
 | 
					import org.geysermc.connector.entity.type.EntityType;
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,9 +23,10 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living;
 | 
					package org.geysermc.connector.entity.living.monster.raid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3f;
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
 | 
					import org.geysermc.connector.entity.living.monster.MonsterEntity;
 | 
				
			||||||
import org.geysermc.connector.entity.type.EntityType;
 | 
					import org.geysermc.connector.entity.type.EntityType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class RaidParticipantEntity extends MonsterEntity {
 | 
					public class RaidParticipantEntity extends MonsterEntity {
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -23,9 +23,10 @@
 | 
				
			||||||
 * @link https://github.com/GeyserMC/Geyser
 | 
					 * @link https://github.com/GeyserMC/Geyser
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.entity.living;
 | 
					package org.geysermc.connector.entity.living.monster.raid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3f;
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
 | 
					import org.geysermc.connector.entity.living.monster.raid.AbstractIllagerEntity;
 | 
				
			||||||
import org.geysermc.connector.entity.type.EntityType;
 | 
					import org.geysermc.connector.entity.type.EntityType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class SpellcasterIllagerEntity extends AbstractIllagerEntity {
 | 
					public class SpellcasterIllagerEntity extends AbstractIllagerEntity {
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -28,10 +28,18 @@ 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.horse.HorseEntity;
 | 
					import org.geysermc.connector.entity.living.animal.AnimalEntity;
 | 
				
			||||||
import org.geysermc.connector.entity.living.horse.LlamaEntity;
 | 
					import org.geysermc.connector.entity.living.animal.TameableEntity;
 | 
				
			||||||
import org.geysermc.connector.entity.living.monster.GuardianEntity;
 | 
					import org.geysermc.connector.entity.living.animal.horse.AbstractHorseEntity;
 | 
				
			||||||
import org.geysermc.connector.entity.living.monster.ZombieEntity;
 | 
					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.HorseEntity;
 | 
				
			||||||
 | 
					import org.geysermc.connector.entity.living.animal.horse.LlamaEntity;
 | 
				
			||||||
 | 
					import org.geysermc.connector.entity.living.monster.*;
 | 
				
			||||||
 | 
					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.SpellcasterIllagerEntity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Getter
 | 
					@Getter
 | 
				
			||||||
public enum EntityType {
 | 
					public enum EntityType {
 | 
				
			||||||
| 
						 | 
					@ -39,12 +47,12 @@ 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(AnimalEntity.class, 12, 0.9f),
 | 
				
			||||||
    SHEEP(AnimalEntity.class, 13, 1.3f, 0.9f),
 | 
					    SHEEP(SheepEntity.class, 13, 1.3f, 0.9f),
 | 
				
			||||||
    WOLF(AnimalEntity.class, 14, 0.85f, 0.6f),
 | 
					    WOLF(AnimalEntity.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),
 | 
				
			||||||
    RABBIT(AnimalEntity.class, 18, 0.5f, 0.4f),
 | 
					    RABBIT(RabbitEntity.class, 18, 0.5f, 0.4f),
 | 
				
			||||||
    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),
 | 
				
			||||||
| 
						 | 
					@ -90,7 +98,7 @@ public enum EntityType {
 | 
				
			||||||
    PHANTOM(FlyingEntity.class, 58, 0.5f, 0.9f, 0.9f, 0.6f),
 | 
					    PHANTOM(FlyingEntity.class, 58, 0.5f, 0.9f, 0.9f, 0.6f),
 | 
				
			||||||
    RAVAGER(RaidParticipantEntity.class, 59, 1.9f, 1.2f),
 | 
					    RAVAGER(RaidParticipantEntity.class, 59, 1.9f, 1.2f),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ARMOR_STAND(LivingEntity.class, 61, 0f),
 | 
					    ARMOR_STAND(ArmorStandEntity.class, 61, 0f),
 | 
				
			||||||
    TRIPOD_CAMERA(Entity.class, 62, 0f),
 | 
					    TRIPOD_CAMERA(Entity.class, 62, 0f),
 | 
				
			||||||
    PLAYER(PlayerEntity.class, 63, 1.8f, 0.6f, 0.6f, 1.62f),
 | 
					    PLAYER(PlayerEntity.class, 63, 1.8f, 0.6f, 0.6f, 1.62f),
 | 
				
			||||||
    ITEM(ItemEntity.class, 64, 0.25f, 0.25f),
 | 
					    ITEM(ItemEntity.class, 64, 0.25f, 0.25f),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,28 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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.metrics;
 | 
					package org.geysermc.connector.metrics;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.gson.JsonArray;
 | 
					import com.google.gson.JsonArray;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,7 @@ import com.github.steveice10.mc.auth.data.GameProfile;
 | 
				
			||||||
import com.github.steveice10.mc.auth.exception.request.RequestException;
 | 
					import com.github.steveice10.mc.auth.exception.request.RequestException;
 | 
				
			||||||
import com.github.steveice10.mc.protocol.MinecraftProtocol;
 | 
					import com.github.steveice10.mc.protocol.MinecraftProtocol;
 | 
				
			||||||
import com.github.steveice10.mc.protocol.data.game.entity.player.GameMode;
 | 
					import com.github.steveice10.mc.protocol.data.game.entity.player.GameMode;
 | 
				
			||||||
 | 
					import com.github.steveice10.mc.protocol.packet.ingame.server.ServerRespawnPacket;
 | 
				
			||||||
import com.github.steveice10.packetlib.Client;
 | 
					import com.github.steveice10.packetlib.Client;
 | 
				
			||||||
import com.github.steveice10.packetlib.event.session.ConnectedEvent;
 | 
					import com.github.steveice10.packetlib.event.session.ConnectedEvent;
 | 
				
			||||||
import com.github.steveice10.packetlib.event.session.DisconnectedEvent;
 | 
					import com.github.steveice10.packetlib.event.session.DisconnectedEvent;
 | 
				
			||||||
| 
						 | 
					@ -62,7 +63,7 @@ import org.geysermc.connector.entity.PlayerEntity;
 | 
				
			||||||
import org.geysermc.connector.inventory.PlayerInventory;
 | 
					import org.geysermc.connector.inventory.PlayerInventory;
 | 
				
			||||||
import org.geysermc.connector.network.session.cache.*;
 | 
					import org.geysermc.connector.network.session.cache.*;
 | 
				
			||||||
import org.geysermc.connector.network.translators.Registry;
 | 
					import org.geysermc.connector.network.translators.Registry;
 | 
				
			||||||
import org.geysermc.connector.network.translators.TranslatorsInit;
 | 
					import org.geysermc.connector.utils.ChunkUtils;
 | 
				
			||||||
import org.geysermc.connector.utils.Toolbox;
 | 
					import org.geysermc.connector.utils.Toolbox;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.net.InetSocketAddress;
 | 
					import java.net.InetSocketAddress;
 | 
				
			||||||
| 
						 | 
					@ -103,6 +104,11 @@ public class GeyserSession implements Player {
 | 
				
			||||||
    @Setter
 | 
					    @Setter
 | 
				
			||||||
    private GameMode gameMode = GameMode.SURVIVAL;
 | 
					    private GameMode gameMode = GameMode.SURVIVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Setter
 | 
				
			||||||
 | 
					    private boolean switchingDimension = false;
 | 
				
			||||||
 | 
					    private boolean manyDimPackets = false;
 | 
				
			||||||
 | 
					    private ServerRespawnPacket lastDimPacket = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public GeyserSession(GeyserConnector connector, BedrockServerSession bedrockServerSession) {
 | 
					    public GeyserSession(GeyserConnector connector, BedrockServerSession bedrockServerSession) {
 | 
				
			||||||
        this.connector = connector;
 | 
					        this.connector = connector;
 | 
				
			||||||
        this.upstream = new UpstreamSession(bedrockServerSession);
 | 
					        this.upstream = new UpstreamSession(bedrockServerSession);
 | 
				
			||||||
| 
						 | 
					@ -127,25 +133,8 @@ public class GeyserSession implements Player {
 | 
				
			||||||
    public void connect(RemoteServer remoteServer) {
 | 
					    public void connect(RemoteServer remoteServer) {
 | 
				
			||||||
        startGame();
 | 
					        startGame();
 | 
				
			||||||
        this.remoteServer = remoteServer;
 | 
					        this.remoteServer = remoteServer;
 | 
				
			||||||
        if (!(connector.getConfig().getRemote().getAuthType().hashCode() == "online".hashCode())) {
 | 
					 | 
				
			||||||
            connector.getLogger().info("Attempting to login using offline mode... authentication is disabled.");
 | 
					 | 
				
			||||||
            authenticate(authenticationData.getName());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Vector3f pos = Vector3f.ZERO;
 | 
					        ChunkUtils.sendEmptyChunks(this, playerEntity.getPosition().toInt(), 0, false);
 | 
				
			||||||
        int chunkX = pos.getFloorX() >> 4;
 | 
					 | 
				
			||||||
        int chunkZ = pos.getFloorZ() >> 4;
 | 
					 | 
				
			||||||
        NetworkChunkPublisherUpdatePacket chunkPublisherUpdatePacket = new NetworkChunkPublisherUpdatePacket();
 | 
					 | 
				
			||||||
        chunkPublisherUpdatePacket.setPosition(pos.toInt());
 | 
					 | 
				
			||||||
        chunkPublisherUpdatePacket.setRadius(renderDistance << 4);
 | 
					 | 
				
			||||||
        upstream.sendPacket(chunkPublisherUpdatePacket);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        LevelChunkPacket data = new LevelChunkPacket();
 | 
					 | 
				
			||||||
        data.setChunkX(chunkX);
 | 
					 | 
				
			||||||
        data.setChunkZ(chunkZ);
 | 
					 | 
				
			||||||
        data.setSubChunksLength(0);
 | 
					 | 
				
			||||||
        data.setData(TranslatorsInit.EMPTY_LEVEL_CHUNK_DATA);
 | 
					 | 
				
			||||||
        upstream.sendPacket(data);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        BiomeDefinitionListPacket biomePacket = new BiomeDefinitionListPacket();
 | 
					        BiomeDefinitionListPacket biomePacket = new BiomeDefinitionListPacket();
 | 
				
			||||||
        biomePacket.setTag(CompoundTag.EMPTY);
 | 
					        biomePacket.setTag(CompoundTag.EMPTY);
 | 
				
			||||||
| 
						 | 
					@ -204,6 +193,16 @@ public class GeyserSession implements Player {
 | 
				
			||||||
                    @Override
 | 
					                    @Override
 | 
				
			||||||
                    public void packetReceived(PacketReceivedEvent event) {
 | 
					                    public void packetReceived(PacketReceivedEvent event) {
 | 
				
			||||||
                        if (!closed) {
 | 
					                        if (!closed) {
 | 
				
			||||||
 | 
					                            //handle consecutive respawn packets
 | 
				
			||||||
 | 
					                            if (event.getPacket().getClass().equals(ServerRespawnPacket.class)) {
 | 
				
			||||||
 | 
					                                manyDimPackets = lastDimPacket != null;
 | 
				
			||||||
 | 
					                                lastDimPacket = event.getPacket();
 | 
				
			||||||
 | 
					                                return;
 | 
				
			||||||
 | 
					                            } else if (lastDimPacket != null) {
 | 
				
			||||||
 | 
					                                Registry.JAVA.translate(lastDimPacket.getClass(), lastDimPacket, GeyserSession.this);
 | 
				
			||||||
 | 
					                                lastDimPacket = null;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            Registry.JAVA.translate(event.getPacket().getClass(), event.getPacket(), GeyserSession.this);
 | 
					                            Registry.JAVA.translate(event.getPacket().getClass(), event.getPacket(), GeyserSession.this);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,28 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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.network.session;
 | 
					package org.geysermc.connector.network.session;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.nukkitx.protocol.bedrock.BedrockPacket;
 | 
					import com.nukkitx.protocol.bedrock.BedrockPacket;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -25,10 +25,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.geysermc.connector.network.session.cache;
 | 
					package org.geysermc.connector.network.session.cache;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import it.unimi.dsi.fastutil.longs.Long2LongMap;
 | 
					import it.unimi.dsi.fastutil.longs.*;
 | 
				
			||||||
import it.unimi.dsi.fastutil.longs.Long2LongOpenHashMap;
 | 
					 | 
				
			||||||
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
 | 
					 | 
				
			||||||
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
 | 
					 | 
				
			||||||
import lombok.Getter;
 | 
					import lombok.Getter;
 | 
				
			||||||
import org.geysermc.connector.entity.Entity;
 | 
					import org.geysermc.connector.entity.Entity;
 | 
				
			||||||
import org.geysermc.connector.entity.PlayerEntity;
 | 
					import org.geysermc.connector.entity.PlayerEntity;
 | 
				
			||||||
| 
						 | 
					@ -45,9 +42,9 @@ public class EntityCache {
 | 
				
			||||||
    private GeyserSession session;
 | 
					    private GeyserSession session;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Getter
 | 
					    @Getter
 | 
				
			||||||
    private Long2ObjectMap<Entity> entities = new Long2ObjectOpenHashMap<>();
 | 
					    private Long2ObjectMap<Entity> entities = Long2ObjectMaps.synchronize(new Long2ObjectOpenHashMap<>());
 | 
				
			||||||
    private Long2LongMap entityIdTranslations = new Long2LongOpenHashMap();
 | 
					    private Long2LongMap entityIdTranslations = Long2LongMaps.synchronize(new Long2LongOpenHashMap());
 | 
				
			||||||
    private Map<UUID, PlayerEntity> playerEntities = new HashMap<>();
 | 
					    private Map<UUID, PlayerEntity> playerEntities = Collections.synchronizedMap(new HashMap<>());
 | 
				
			||||||
    private Map<UUID, Long> bossbars = new HashMap<>();
 | 
					    private Map<UUID, Long> bossbars = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Getter
 | 
					    @Getter
 | 
				
			||||||
| 
						 | 
					@ -76,6 +73,13 @@ public class EntityCache {
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void removeAllEntities() {
 | 
				
			||||||
 | 
					        List<Entity> entities = new ArrayList<>(session.getEntityCache().getEntities().values());
 | 
				
			||||||
 | 
					        for (Entity entity : entities) {
 | 
				
			||||||
 | 
					            session.getEntityCache().removeEntity(entity, false);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Entity getEntityByGeyserId(long geyserId) {
 | 
					    public Entity getEntityByGeyserId(long geyserId) {
 | 
				
			||||||
        return entities.get(geyserId);
 | 
					        return entities.get(geyserId);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -101,6 +101,7 @@ public class TranslatorsInit {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static void start() {
 | 
					    public static void start() {
 | 
				
			||||||
        Registry.registerJava(ServerJoinGamePacket.class, new JavaJoinGameTranslator());
 | 
					        Registry.registerJava(ServerJoinGamePacket.class, new JavaJoinGameTranslator());
 | 
				
			||||||
 | 
					        Registry.registerJava(ServerPluginMessagePacket.class, new JavaPluginMessageTranslator());
 | 
				
			||||||
        Registry.registerJava(ServerChatPacket.class, new JavaChatTranslator());
 | 
					        Registry.registerJava(ServerChatPacket.class, new JavaChatTranslator());
 | 
				
			||||||
        Registry.registerJava(ServerTitlePacket.class, new JavaTitleTranslator());
 | 
					        Registry.registerJava(ServerTitlePacket.class, new JavaTitleTranslator());
 | 
				
			||||||
        Registry.registerJava(ServerUpdateTimePacket.class, new JavaUpdateTimeTranslator());
 | 
					        Registry.registerJava(ServerUpdateTimePacket.class, new JavaUpdateTimeTranslator());
 | 
				
			||||||
| 
						 | 
					@ -164,6 +165,8 @@ public class TranslatorsInit {
 | 
				
			||||||
        Registry.registerBedrock(SetLocalPlayerAsInitializedPacket.class, new BedrockPlayerInitializedTranslator());
 | 
					        Registry.registerBedrock(SetLocalPlayerAsInitializedPacket.class, new BedrockPlayerInitializedTranslator());
 | 
				
			||||||
        Registry.registerBedrock(InteractPacket.class, new BedrockInteractTranslator());
 | 
					        Registry.registerBedrock(InteractPacket.class, new BedrockInteractTranslator());
 | 
				
			||||||
        Registry.registerBedrock(TextPacket.class, new BedrockTextTranslator());
 | 
					        Registry.registerBedrock(TextPacket.class, new BedrockTextTranslator());
 | 
				
			||||||
 | 
					        Registry.registerBedrock(RespawnPacket.class, new BedrockRespawnTranslator());
 | 
				
			||||||
 | 
					        Registry.registerBedrock(ShowCreditsPacket.class, new BedrockShowCreditsTranslator());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        itemTranslator = new ItemTranslator();
 | 
					        itemTranslator = new ItemTranslator();
 | 
				
			||||||
        blockTranslator = new BlockTranslator();
 | 
					        blockTranslator = new BlockTranslator();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,7 @@ import com.github.steveice10.mc.protocol.packet.ingame.client.player.ClientPlaye
 | 
				
			||||||
import com.github.steveice10.mc.protocol.packet.ingame.client.player.ClientPlayerPlaceBlockPacket;
 | 
					import com.github.steveice10.mc.protocol.packet.ingame.client.player.ClientPlayerPlaceBlockPacket;
 | 
				
			||||||
import com.github.steveice10.mc.protocol.packet.ingame.client.player.ClientPlayerStatePacket;
 | 
					import com.github.steveice10.mc.protocol.packet.ingame.client.player.ClientPlayerStatePacket;
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3i;
 | 
					import com.nukkitx.math.vector.Vector3i;
 | 
				
			||||||
 | 
					import com.nukkitx.protocol.bedrock.packet.PlayStatusPacket;
 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.PlayerActionPacket;
 | 
					import com.nukkitx.protocol.bedrock.packet.PlayerActionPacket;
 | 
				
			||||||
import org.geysermc.connector.entity.Entity;
 | 
					import org.geysermc.connector.entity.Entity;
 | 
				
			||||||
import org.geysermc.connector.network.session.GeyserSession;
 | 
					import org.geysermc.connector.network.session.GeyserSession;
 | 
				
			||||||
| 
						 | 
					@ -53,7 +54,7 @@ public class BedrockActionTranslator extends PacketTranslator<PlayerActionPacket
 | 
				
			||||||
        switch (packet.getAction()) {
 | 
					        switch (packet.getAction()) {
 | 
				
			||||||
            case RESPAWN:
 | 
					            case RESPAWN:
 | 
				
			||||||
                // Don't put anything here as respawn is already handled
 | 
					                // Don't put anything here as respawn is already handled
 | 
				
			||||||
                // in JavaPlayerSetHealthTranslator
 | 
					                // in BedrockRespawnTranslator
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            case START_GLIDE:
 | 
					            case START_GLIDE:
 | 
				
			||||||
            case STOP_GLIDE:
 | 
					            case STOP_GLIDE:
 | 
				
			||||||
| 
						 | 
					@ -105,6 +106,14 @@ public class BedrockActionTranslator extends PacketTranslator<PlayerActionPacket
 | 
				
			||||||
            case STOP_BREAK:
 | 
					            case STOP_BREAK:
 | 
				
			||||||
                // Handled in BedrockInventoryTransactionTranslator
 | 
					                // Handled in BedrockInventoryTransactionTranslator
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					            case DIMENSION_CHANGE_SUCCESS:
 | 
				
			||||||
 | 
					                session.setSwitchingDimension(false);
 | 
				
			||||||
 | 
					                //sometimes the client doesn't feel like loading
 | 
				
			||||||
 | 
					                PlayStatusPacket spawnPacket = new PlayStatusPacket();
 | 
				
			||||||
 | 
					                spawnPacket.setStatus(PlayStatusPacket.Status.PLAYER_SPAWN);
 | 
				
			||||||
 | 
					                session.getUpstream().sendPacket(spawnPacket);
 | 
				
			||||||
 | 
					                entity.updateBedrockAttributes(session);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,7 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void translate(MovePlayerPacket packet, GeyserSession session) {
 | 
					    public void translate(MovePlayerPacket packet, GeyserSession session) {
 | 
				
			||||||
        PlayerEntity entity = session.getPlayerEntity();
 | 
					        PlayerEntity entity = session.getPlayerEntity();
 | 
				
			||||||
        if (entity == null || !session.isSpawned()) return;
 | 
					        if (entity == null || !session.isSpawned() || session.isSwitchingDimension()) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!session.getUpstream().isInitialized()) {
 | 
					        if (!session.getUpstream().isInitialized()) {
 | 
				
			||||||
            MoveEntityAbsolutePacket moveEntityBack = new MoveEntityAbsolutePacket();
 | 
					            MoveEntityAbsolutePacket moveEntityBack = new MoveEntityAbsolutePacket();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,28 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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.network.translators.bedrock;
 | 
					package org.geysermc.connector.network.translators.bedrock;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.SetLocalPlayerAsInitializedPacket;
 | 
					import com.nukkitx.protocol.bedrock.packet.SetLocalPlayerAsInitializedPacket;
 | 
				
			||||||
| 
						 | 
					@ -13,6 +38,11 @@ public class BedrockPlayerInitializedTranslator extends PacketTranslator<SetLoca
 | 
				
			||||||
            if (!session.getUpstream().isInitialized()) {
 | 
					            if (!session.getUpstream().isInitialized()) {
 | 
				
			||||||
                session.getUpstream().setInitialized(true);
 | 
					                session.getUpstream().setInitialized(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (!(session.getConnector().getConfig().getRemote().getAuthType().hashCode() == "online".hashCode())) {
 | 
				
			||||||
 | 
					                    session.getConnector().getLogger().info("Attempting to login using offline mode... authentication is disabled.");
 | 
				
			||||||
 | 
					                    session.authenticate(session.getAuthenticationData().getName());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                for (PlayerEntity entity : session.getEntityCache().getEntitiesByType(PlayerEntity.class)) {
 | 
					                for (PlayerEntity entity : session.getEntityCache().getEntitiesByType(PlayerEntity.class)) {
 | 
				
			||||||
                    if (!entity.isValid()) {
 | 
					                    if (!entity.isValid()) {
 | 
				
			||||||
                        // async skin loading
 | 
					                        // async skin loading
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,50 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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.network.translators.bedrock;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.github.steveice10.mc.protocol.data.game.ClientRequest;
 | 
				
			||||||
 | 
					import com.github.steveice10.mc.protocol.packet.ingame.client.ClientRequestPacket;
 | 
				
			||||||
 | 
					import com.nukkitx.math.vector.Vector3f;
 | 
				
			||||||
 | 
					import com.nukkitx.protocol.bedrock.packet.RespawnPacket;
 | 
				
			||||||
 | 
					import org.geysermc.connector.network.session.GeyserSession;
 | 
				
			||||||
 | 
					import org.geysermc.connector.network.translators.PacketTranslator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class BedrockRespawnTranslator extends PacketTranslator<RespawnPacket> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void translate(RespawnPacket packet, GeyserSession session) {
 | 
				
			||||||
 | 
					        if (packet.getSpawnState() == RespawnPacket.State.CLIENT_READY) {
 | 
				
			||||||
 | 
					            RespawnPacket respawnPacket = new RespawnPacket();
 | 
				
			||||||
 | 
					            respawnPacket.setRuntimeEntityId(0);
 | 
				
			||||||
 | 
					            respawnPacket.setPosition(Vector3f.ZERO);
 | 
				
			||||||
 | 
					            respawnPacket.setSpawnState(RespawnPacket.State.SERVER_SEARCHING);
 | 
				
			||||||
 | 
					            session.getUpstream().sendPacket(respawnPacket);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ClientRequestPacket javaRespawnPacket = new ClientRequestPacket(ClientRequest.RESPAWN);
 | 
				
			||||||
 | 
					            session.getDownstream().getSession().send(javaRespawnPacket);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,43 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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.network.translators.bedrock;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.github.steveice10.mc.protocol.data.game.ClientRequest;
 | 
				
			||||||
 | 
					import com.github.steveice10.mc.protocol.packet.ingame.client.ClientRequestPacket;
 | 
				
			||||||
 | 
					import com.nukkitx.protocol.bedrock.packet.ShowCreditsPacket;
 | 
				
			||||||
 | 
					import org.geysermc.connector.network.session.GeyserSession;
 | 
				
			||||||
 | 
					import org.geysermc.connector.network.translators.PacketTranslator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class BedrockShowCreditsTranslator extends PacketTranslator<ShowCreditsPacket> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void translate(ShowCreditsPacket packet, GeyserSession session) {
 | 
				
			||||||
 | 
					        if (packet.getStatus() == ShowCreditsPacket.Status.END_CREDITS) {
 | 
				
			||||||
 | 
					            ClientRequestPacket javaRespawnPacket = new ClientRequestPacket(ClientRequest.RESPAWN);
 | 
				
			||||||
 | 
					            session.getDownstream().getSession().send(javaRespawnPacket);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,28 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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.network.translators.block;
 | 
					package org.geysermc.connector.network.translators.block;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.github.steveice10.mc.protocol.data.game.world.block.BlockState;
 | 
					import com.github.steveice10.mc.protocol.data.game.world.block.BlockState;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,28 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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.network.translators.java;
 | 
					package org.geysermc.connector.network.translators.java;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.github.steveice10.mc.protocol.packet.ingame.server.ServerBossBarPacket;
 | 
					import com.github.steveice10.mc.protocol.packet.ingame.server.ServerBossBarPacket;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -26,22 +26,20 @@
 | 
				
			||||||
package org.geysermc.connector.network.translators.java;
 | 
					package org.geysermc.connector.network.translators.java;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.github.steveice10.mc.protocol.packet.ingame.server.ServerJoinGamePacket;
 | 
					import com.github.steveice10.mc.protocol.packet.ingame.server.ServerJoinGamePacket;
 | 
				
			||||||
import com.nukkitx.math.vector.Vector3i;
 | 
					 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.AdventureSettingsPacket;
 | 
					 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.ChunkRadiusUpdatedPacket;
 | 
					 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.PlayStatusPacket;
 | 
					 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.SetEntityDataPacket;
 | 
					 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.SetPlayerGameTypePacket;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.nukkitx.protocol.bedrock.packet.*;
 | 
				
			||||||
import org.geysermc.connector.entity.PlayerEntity;
 | 
					import org.geysermc.connector.entity.PlayerEntity;
 | 
				
			||||||
import org.geysermc.connector.network.session.GeyserSession;
 | 
					import org.geysermc.connector.network.session.GeyserSession;
 | 
				
			||||||
import org.geysermc.connector.network.translators.PacketTranslator;
 | 
					import org.geysermc.connector.network.translators.PacketTranslator;
 | 
				
			||||||
import org.geysermc.connector.world.chunk.ChunkPosition;
 | 
					import org.geysermc.connector.utils.DimensionUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class JavaJoinGameTranslator extends PacketTranslator<ServerJoinGamePacket> {
 | 
					public class JavaJoinGameTranslator extends PacketTranslator<ServerJoinGamePacket> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void translate(ServerJoinGamePacket packet, GeyserSession session) {
 | 
					    public void translate(ServerJoinGamePacket packet, GeyserSession session) {
 | 
				
			||||||
 | 
					        PlayerEntity entity = session.getPlayerEntity();
 | 
				
			||||||
 | 
					        entity.setEntityId(packet.getEntityId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        AdventureSettingsPacket bedrockPacket = new AdventureSettingsPacket();
 | 
					        AdventureSettingsPacket bedrockPacket = new AdventureSettingsPacket();
 | 
				
			||||||
        bedrockPacket.setUniqueEntityId(session.getPlayerEntity().getGeyserId());
 | 
					        bedrockPacket.setUniqueEntityId(session.getPlayerEntity().getGeyserId());
 | 
				
			||||||
        bedrockPacket.setPlayerPermission(1);
 | 
					        bedrockPacket.setPlayerPermission(1);
 | 
				
			||||||
| 
						 | 
					@ -51,9 +49,6 @@ public class JavaJoinGameTranslator extends PacketTranslator<ServerJoinGamePacke
 | 
				
			||||||
        playStatus.setStatus(PlayStatusPacket.Status.LOGIN_SUCCESS);
 | 
					        playStatus.setStatus(PlayStatusPacket.Status.LOGIN_SUCCESS);
 | 
				
			||||||
        // session.getUpstream().sendPacket(playStatus);
 | 
					        // session.getUpstream().sendPacket(playStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        PlayerEntity entity = session.getPlayerEntity();
 | 
					 | 
				
			||||||
        entity.setEntityId(packet.getEntityId());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        SetPlayerGameTypePacket playerGameTypePacket = new SetPlayerGameTypePacket();
 | 
					        SetPlayerGameTypePacket playerGameTypePacket = new SetPlayerGameTypePacket();
 | 
				
			||||||
        playerGameTypePacket.setGamemode(packet.getGameMode().ordinal());
 | 
					        playerGameTypePacket.setGamemode(packet.getGameMode().ordinal());
 | 
				
			||||||
        session.getUpstream().sendPacket(playerGameTypePacket);
 | 
					        session.getUpstream().sendPacket(playerGameTypePacket);
 | 
				
			||||||
| 
						 | 
					@ -71,6 +66,8 @@ public class JavaJoinGameTranslator extends PacketTranslator<ServerJoinGamePacke
 | 
				
			||||||
        chunkRadiusPacket.setRadius(session.getRenderDistance());
 | 
					        chunkRadiusPacket.setRadius(session.getRenderDistance());
 | 
				
			||||||
        session.getUpstream().sendPacket(chunkRadiusPacket);
 | 
					        session.getUpstream().sendPacket(chunkRadiusPacket);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        session.setSpawned(true);
 | 
					        if (DimensionUtils.javaToBedrock(packet.getDimension()) != entity.getDimension()) {
 | 
				
			||||||
 | 
					            DimensionUtils.switchDimension(session, packet.getDimension(), false);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,43 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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.network.translators.java;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.github.steveice10.mc.protocol.packet.ingame.client.ClientPluginMessagePacket;
 | 
				
			||||||
 | 
					import com.github.steveice10.mc.protocol.packet.ingame.server.ServerPluginMessagePacket;
 | 
				
			||||||
 | 
					import org.geysermc.connector.GeyserConnector;
 | 
				
			||||||
 | 
					import org.geysermc.connector.network.session.GeyserSession;
 | 
				
			||||||
 | 
					import org.geysermc.connector.network.translators.PacketTranslator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class JavaPluginMessageTranslator extends PacketTranslator<ServerPluginMessagePacket> {
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void translate(ServerPluginMessagePacket packet, GeyserSession session) {
 | 
				
			||||||
 | 
					        if (packet.getChannel().equals("minecraft:brand")) {
 | 
				
			||||||
 | 
					            session.getDownstream().getSession().send(
 | 
				
			||||||
 | 
					                    new ClientPluginMessagePacket(packet.getChannel(), GeyserConnector.NAME.getBytes())
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					@ -26,12 +26,12 @@
 | 
				
			||||||
package org.geysermc.connector.network.translators.java;
 | 
					package org.geysermc.connector.network.translators.java;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.github.steveice10.mc.protocol.packet.ingame.server.ServerRespawnPacket;
 | 
					import com.github.steveice10.mc.protocol.packet.ingame.server.ServerRespawnPacket;
 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.ChangeDimensionPacket;
 | 
					import com.nukkitx.protocol.bedrock.packet.*;
 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.PlayStatusPacket;
 | 
					 | 
				
			||||||
import com.nukkitx.protocol.bedrock.packet.SetPlayerGameTypePacket;
 | 
					 | 
				
			||||||
import org.geysermc.connector.entity.Entity;
 | 
					import org.geysermc.connector.entity.Entity;
 | 
				
			||||||
 | 
					import org.geysermc.connector.entity.attribute.AttributeType;
 | 
				
			||||||
import org.geysermc.connector.network.session.GeyserSession;
 | 
					import org.geysermc.connector.network.session.GeyserSession;
 | 
				
			||||||
import org.geysermc.connector.network.translators.PacketTranslator;
 | 
					import org.geysermc.connector.network.translators.PacketTranslator;
 | 
				
			||||||
 | 
					import org.geysermc.connector.utils.DimensionUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class JavaRespawnTranslator extends PacketTranslator<ServerRespawnPacket> {
 | 
					public class JavaRespawnTranslator extends PacketTranslator<ServerRespawnPacket> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,37 +41,25 @@ public class JavaRespawnTranslator extends PacketTranslator<ServerRespawnPacket>
 | 
				
			||||||
        if (entity == null)
 | 
					        if (entity == null)
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (entity.getDimension() == getDimension(packet.getDimension()))
 | 
					        float maxHealth = entity.getAttributes().containsKey(AttributeType.MAX_HEALTH) ? entity.getAttributes().get(AttributeType.MAX_HEALTH).getValue() : 20f;
 | 
				
			||||||
            return;
 | 
					        // Max health must be divisible by two in bedrock
 | 
				
			||||||
 | 
					        entity.getAttributes().put(AttributeType.HEALTH, AttributeType.HEALTH.getAttribute(maxHealth, (maxHealth % 2 == 1 ? maxHealth + 1 : maxHealth)));
 | 
				
			||||||
        entity.setDimension(getDimension(packet.getDimension()));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ChangeDimensionPacket changeDimensionPacket = new ChangeDimensionPacket();
 | 
					 | 
				
			||||||
        changeDimensionPacket.setDimension(getDimension(packet.getDimension()));
 | 
					 | 
				
			||||||
        changeDimensionPacket.setRespawn(false);
 | 
					 | 
				
			||||||
        changeDimensionPacket.setPosition(entity.getPosition());
 | 
					 | 
				
			||||||
        session.getUpstream().sendPacket(changeDimensionPacket);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SetPlayerGameTypePacket playerGameTypePacket = new SetPlayerGameTypePacket();
 | 
					        SetPlayerGameTypePacket playerGameTypePacket = new SetPlayerGameTypePacket();
 | 
				
			||||||
        playerGameTypePacket.setGamemode(packet.getGamemode().ordinal());
 | 
					        playerGameTypePacket.setGamemode(packet.getGamemode().ordinal());
 | 
				
			||||||
        session.getUpstream().sendPacket(playerGameTypePacket);
 | 
					        session.getUpstream().sendPacket(playerGameTypePacket);
 | 
				
			||||||
        session.setGameMode(packet.getGamemode());
 | 
					        session.setGameMode(packet.getGamemode());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /*
 | 
					        if (entity.getDimension() != DimensionUtils.javaToBedrock(packet.getDimension())) {
 | 
				
			||||||
        PlayStatusPacket playStatusPacket = new PlayStatusPacket();
 | 
					            DimensionUtils.switchDimension(session, packet.getDimension(), false);
 | 
				
			||||||
        playStatusPacket.setStatus(PlayStatusPacket.Status.PLAYER_SPAWN);
 | 
					        } else {
 | 
				
			||||||
        session.getUpstream().sendPacket(playStatusPacket);
 | 
					            // Handled in JavaPlayerPositionRotationTranslator
 | 
				
			||||||
        */
 | 
					            session.setSpawned(false);
 | 
				
			||||||
    }
 | 
					            if (session.isManyDimPackets()) { //reloading world
 | 
				
			||||||
 | 
					                int fakeDim = entity.getDimension() == 0 ? -1 : 0;
 | 
				
			||||||
    private int getDimension(int javaDimension) {
 | 
					                DimensionUtils.switchDimension(session, fakeDim, true);
 | 
				
			||||||
        switch (javaDimension) {
 | 
					                DimensionUtils.switchDimension(session, packet.getDimension(), false);
 | 
				
			||||||
            case -1:
 | 
					            }
 | 
				
			||||||
                return 1;
 | 
					 | 
				
			||||||
            case 1:
 | 
					 | 
				
			||||||
                return 2;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return javaDimension;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2019 GeyserMC. http://geysermc.org
 | 
					 * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
					 * of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue