Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void saddleEntity(ItemStack stack, final EntityLiving entity) {
- new Thread() {
- public void run() {
- Float[] oldValues = new Float[5];
- Field[] fieldsToSet = new Field[5];
- Field[] declaredFields = EntityLiving.class.getDeclaredFields();
- int numChanged = 0;
- boolean jumpingSet = false;
- for (int i = declaredFields.length - 1; i >= 0; i--) {
- Field field = declaredFields[i];
- if (field.getType().equals(float.class) && Modifier.isProtected(field.getModifiers())) {
- field.setAccessible(true);
- try {
- oldValues[numChanged] = field.getFloat(entity);
- field.setFloat(entity, 0.0F);
- fieldsToSet[numChanged] = field;
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- numChanged++;
- } else if (!jumpingSet && field.getType().equals(boolean.class) && Modifier.isProtected(field.getModifiers())) {
- field.setAccessible(true);
- try {
- field.setBoolean(entity, false);
- jumpingSet = true;
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- if (numChanged >= 5) break;
- }
- entity.isMultiplayerEntity = true;
- Thread hurtThread = new Thread() {
- public void run() {
- while (true) {
- entity.hurtTime = 5;
- entity.isMultiplayerEntity = true;
- try {
- sleep(40);
- } catch (InterruptedException e) {
- entity.hurtTime = 0;
- break;
- }
- }
- }
- };
- hurtThread.start();
- try {
- sleep(3000);
- } catch (InterruptedException ignored) {
- }
- hurtThread.interrupt();
- entity.isMultiplayerEntity = false;
- for (int i = 0; i < fieldsToSet.length; i++) {
- if (oldValues[i] > 0F) try {
- fieldsToSet[i].setFloat(entity, oldValues[i]);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- }
- }.start();
- }
Add Comment
Please, Sign In to add comment