Advertisement
Guest User

sbcode

a guest
Sep 19th, 2023
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 KB | None | 0 0
  1. package net.mcreator.simplejumpmod.procedures;
  2.  
  3. import net.minecraft.world.phys.Vec3;
  4. import net.minecraft.world.level.LevelAccessor;
  5. import net.minecraft.world.level.GameType;
  6. import net.minecraft.world.entity.player.Player;
  7. import net.minecraft.world.entity.Entity;
  8. import net.minecraft.server.level.ServerPlayer;
  9. import net.minecraft.client.Minecraft;
  10. import net.minecraft.core.BlockPos;
  11. import net.minecraft.world.level.block.state.BlockState;
  12. import net.minecraft.world.phys.AABB;
  13. import net.minecraft.core.Direction;
  14. import net.minecraft.world.level.block.state.properties.DirectionProperty;
  15. import net.minecraft.world.level.block.state.properties.Property;
  16. import net.mcreator.simplejumpmod.init.SimplejumpmodModBlocks;
  17.  
  18. public class GoopyBlockUpdateTickProcedure {
  19. public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) {
  20. if (entity == null)
  21. return;
  22. if (entity instanceof Player && new Object() {
  23. public boolean checkGamemode(Entity _ent) {
  24. if (_ent instanceof ServerPlayer _serverPlayer) {
  25. return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.SURVIVAL;
  26. } else if (_ent.level().isClientSide() && _ent instanceof Player _player) {
  27. return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.SURVIVAL;
  28. }
  29. return false;
  30. }
  31. }.checkGamemode(entity) && !entity.isShiftKeyDown()) {
  32. BlockPos blockPos = new BlockPos((int) x, (int) y, (int) z);
  33. BlockState blockState = world.getBlockState(blockPos);
  34.  
  35. if (blockState.getBlock() == SimplejumpmodModBlocks.GOOPY_BLOCK.get()) {
  36. Direction hitSide = null;
  37.  
  38. // Calculate the player's collision box
  39. AABB playerAABB = entity.getBoundingBox();
  40.  
  41. // Calculate the block's collision box
  42. AABB blockAABB = blockState.getCollisionShape(world, blockPos).bounds();
  43.  
  44. // Check for collision with each side
  45. if (playerAABB.intersects(new AABB(blockPos, blockPos.offset(1, 0, 0)))) {
  46. hitSide = Direction.WEST;
  47. } else if (playerAABB.intersects(new AABB(blockPos, blockPos.offset(0, 0, 1)))) {
  48. hitSide = Direction.NORTH;
  49. } else if (playerAABB.intersects(new AABB(blockPos.offset(-1, 0, 0), blockPos))) {
  50. hitSide = Direction.EAST;
  51. } else if (playerAABB.intersects(new AABB(blockPos.offset(0, 0, -1), blockPos))) {
  52. hitSide = Direction.SOUTH;
  53. } else if (playerAABB.intersects(new AABB(blockPos.offset(0, 1, 0), blockPos.offset(1, 1, 1)))) {
  54. hitSide = Direction.DOWN;
  55. } else if (playerAABB.intersects(new AABB(blockPos.offset(0, -1, 0), blockPos))) {
  56. hitSide = Direction.UP;
  57. }
  58.  
  59. if (hitSide != null) {
  60. double bounceFactor = 0.5D; // Adjust this value as needed
  61.  
  62. // Apply a bounce in the direction of the collision
  63. switch (hitSide) {
  64. case WEST:
  65. entity.setDeltaMovement(new Vec3(-bounceFactor, 0.0D, 0.0D));
  66. break;
  67. case NORTH:
  68. entity.setDeltaMovement(new Vec3(0.0D, 0.0D, -bounceFactor));
  69. break;
  70. case EAST:
  71. entity.setDeltaMovement(new Vec3(bounceFactor, 0.0D, 0.0D));
  72. break;
  73. case SOUTH:
  74. entity.setDeltaMovement(new Vec3(0.0D, 0.0D, bounceFactor));
  75. break;
  76. case DOWN:
  77. entity.setDeltaMovement(new Vec3(0.0D, -bounceFactor, 0.0D));
  78. break;
  79. case UP:
  80. entity.setDeltaMovement(new Vec3(0.0D, bounceFactor, 0.0D));
  81. break;
  82. }
  83. }
  84. }
  85. }
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement