diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/BeamRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/BeamRenderer.java deleted file mode 100644 index a6df77999..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/BeamRenderer.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.atsuishio.superbwarfare.client.renderer.entity; - -import com.atsuishio.superbwarfare.entity.BeamEntity; -import com.atsuishio.superbwarfare.entity.layer.BeamLayer; -import com.atsuishio.superbwarfare.entity.model.BeamModel; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.math.Axis; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import software.bernie.geckolib.cache.object.BakedGeoModel; -import software.bernie.geckolib.renderer.GeoEntityRenderer; - -public class BeamRenderer extends GeoEntityRenderer { - - public BeamRenderer(EntityRendererProvider.Context renderManager) { - super(renderManager, new BeamModel()); - this.addRenderLayer(new BeamLayer(this)); - this.shadowRadius = 0f; - } - - @Override - public RenderType getRenderType(BeamEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { - return RenderType.entityTranslucent(getTextureLocation(animatable)); - } - - @Override - public void preRender(PoseStack poseStack, BeamEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, - float blue, float alpha) { - float scale = 0.5f; - this.scaleHeight = scale; - this.scaleWidth = scale; - super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); - } - - @Override - public void render(BeamEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { - poseStack.pushPose(); - poseStack.mulPose(Axis.YP.rotationDegrees(-Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()))); - poseStack.mulPose(Axis.XP.rotationDegrees(Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()))); - super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); - poseStack.popPose(); - } - - @Override - protected float getDeathMaxRotation(BeamEntity entityLivingBaseIn) { - return 0.0F; - } - - @Override - public boolean shouldShowName(BeamEntity animatable) { - return false; - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/BeamEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/BeamEntity.java deleted file mode 100644 index b50f33e4b..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/entity/BeamEntity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.atsuishio.superbwarfare.entity; - -import com.atsuishio.superbwarfare.init.ModEntities; -import com.atsuishio.superbwarfare.init.ModItems; -import com.atsuishio.superbwarfare.tools.TraceTool; -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.syncher.EntityDataAccessor; -import net.minecraft.network.syncher.EntityDataSerializers; -import net.minecraft.network.syncher.SynchedEntityData; -import net.minecraft.server.players.OldUsersConverter; -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.OwnableEntity; -import net.minecraft.world.level.ClipContext; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.GlassBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.Vec3; -import software.bernie.geckolib.animatable.GeoEntity; -import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; -import software.bernie.geckolib.core.animation.AnimatableManager; -import software.bernie.geckolib.util.GeckoLibUtil; - -import javax.annotation.Nullable; -import java.util.Optional; -import java.util.UUID; - -public class BeamEntity extends Entity implements GeoEntity, AnimatedEntity, OwnableEntity { - protected static final EntityDataAccessor> OWNER_UUID = SynchedEntityData.defineId(BeamEntity.class, EntityDataSerializers.OPTIONAL_UUID); - - public static final EntityDataAccessor LENGTH = SynchedEntityData.defineId(BeamEntity.class, EntityDataSerializers.FLOAT); - private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); - protected int interpolationSteps; - protected double serverYRot; - protected double serverXRot; - protected double x; - protected double y; - protected double z; - - public BeamEntity(EntityType type, Level world) { - super(type, world); - } - - public BeamEntity(LivingEntity owner, Level level) { - super(ModEntities.BEAM.get(), level); - this.setOwnerUUID(owner.getUUID()); - } - - @Override - protected void defineSynchedData() { - this.entityData.define(OWNER_UUID, Optional.empty()); - this.entityData.define(LENGTH, 0f); - - } - - @Override - public boolean isPickable() { - return !this.isRemoved(); - } - - @Override - public boolean hurt(DamageSource source, float amount) { - return false; - } - - public void setOwnerUUID(@Nullable UUID pUuid) { - this.entityData.set(OWNER_UUID, Optional.ofNullable(pUuid)); - } - - @Nullable - public UUID getOwnerUUID() { - return this.entityData.get(OWNER_UUID).orElse(null); - } - - @Override - public boolean shouldRenderAtSqrDistance(double pDistance) { - return true; - } - - - - @Override - public void addAdditionalSaveData(CompoundTag compound) { - if (this.getOwnerUUID() != null) { - compound.putUUID("Owner", this.getOwnerUUID()); - } - compound.putFloat("Length", this.entityData.get(LENGTH)); - } - - @Override - public void readAdditionalSaveData(CompoundTag compound) { - UUID uuid; - if (compound.hasUUID("Owner")) { - uuid = compound.getUUID("Owner"); - } else { - String s = compound.getString("Owner"); - - assert this.getServer() != null; - uuid = OldUsersConverter.convertMobOwnerIfNecessary(this.getServer(), s); - } - - if (uuid != null) { - try { - this.setOwnerUUID(uuid); - } catch (Throwable ignored) { - } - } - - if (compound.contains("Length")) { - this.entityData.set(LENGTH, compound.getFloat("Length")); - } - } - - @Override - public void tick() { - super.tick(); - - if (this.getOwner() == null) { - this.discard(); - } - - if (!this.getOwner().getMainHandItem().is(ModItems.BEAM_TEST.get()) || (this.getOwner().getMainHandItem().is(ModItems.BEAM_TEST.get()) && !this.getOwner().getMainHandItem().getOrCreateTag().getBoolean("Using"))) { - this.discard(); - } - - this.updatePositionAndRotation(); - - boolean lookAtEntity = false; - double block_range = this.position().distanceTo((Vec3.atLowerCornerOf(this.level().clip( - new ClipContext(this.getEyePosition(), this.getEyePosition().add(this.getViewVector(1f).scale(512)), - ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, this)).getBlockPos()))); - - BlockHitResult blockResult = this.level().clip( - new ClipContext(this.getEyePosition(), this.getEyePosition().add(this.getViewVector(1f).scale(512)), - ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, this)); - - BlockPos resultPos = blockResult.getBlockPos(); - BlockState state = this.level().getBlockState(resultPos); - - double entity_range = 0; - - Entity lookingEntity = TraceTool.findLookingEntity(this, 512); - - if (lookingEntity != null) { - lookAtEntity = true; - entity_range = this.distanceTo(lookingEntity); - } - - if (lookAtEntity && lookingEntity != this.getOwner()) { - entityData.set(LENGTH, (float)entity_range); - } else if (!(state.getBlock() instanceof GlassBlock)){ - entityData.set(LENGTH, (float)block_range); - } - - this.refreshDimensions(); - } - - @Override - public boolean isPushable() { - return true; - } - - @Override - public String getSyncedAnimation() { - return null; - } - - @Override - public void setAnimation(String animation) { - } - - @Override - public boolean isNoGravity() { - return true; - } - - public void updatePositionAndRotation() { - LivingEntity owner = this.getOwner(); - if (owner != null) { - this.setPos(this.getOwner().getX() + 0.5 * this.getOwner().getLookAngle().x, - this.getOwner().getEyeY() - 0.3 + 0.5 * this.getOwner().getLookAngle().y, - this.getOwner().getZ() + 0.5 * this.getOwner().getLookAngle().z); - - this.setYRot(boundDegrees(owner.getYRot())); - this.setXRot(boundDegrees(owner.getXRot())); - this.yRotO = boundDegrees(owner.yRotO); - this.xRotO = boundDegrees(owner.xRotO); - } - } - - private float boundDegrees(float v) { - return (v % 360 + 360) % 360; - } - - @Override - public void lerpTo(double x, double y, double z, float yaw, float pitch, int interpolationSteps, boolean interpolate) { - this.x = x; - this.y = y; - this.z = z; - serverYRot = yaw; - serverXRot = pitch; - this.interpolationSteps = 10; - } - - @Override - public void setAnimationProcedure(String procedure) { - } - - @Override - public void registerControllers(AnimatableManager.ControllerRegistrar data) { - } - - @Override - public AnimatableInstanceCache getAnimatableInstanceCache() { - return this.cache; - } -} \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java index 594da882a..8413085bb 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/DroneEntity.java @@ -256,7 +256,7 @@ public class DroneEntity extends LivingEntity implements GeoEntity { var level = this.level(); final Vec3 center = new Vec3(this.getX(), this.getY(), this.getZ()); for (Entity target : level.getEntitiesOfClass(Entity.class, aabb, e -> true).stream().sorted(Comparator.comparingDouble(e -> e.distanceToSqr(center))).toList()) { - if (this != target && target != null) { + if (this != target && target instanceof LivingEntity) { target.hurt(ModDamageTypes.causeDroneHitDamage(this.level().registryAccess(), this, controller), 1); target.invulnerableTime = 0; if (target instanceof Mob mobEntity) { diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/layer/BeamLayer.java b/src/main/java/com/atsuishio/superbwarfare/entity/layer/BeamLayer.java deleted file mode 100644 index 72f603598..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/entity/layer/BeamLayer.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.atsuishio.superbwarfare.entity.layer; - -import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.entity.BeamEntity; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.resources.ResourceLocation; -import software.bernie.geckolib.cache.object.BakedGeoModel; -import software.bernie.geckolib.renderer.GeoRenderer; -import software.bernie.geckolib.renderer.layer.GeoRenderLayer; - -public class BeamLayer extends GeoRenderLayer { - - private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/laser_beam_e.png"); - - public BeamLayer(GeoRenderer entityRenderer) { - super(entityRenderer); - } - - @Override - public void render(PoseStack poseStack, BeamEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { - RenderType glowRenderType = RenderType.energySwirl(LAYER,1,1); - getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/model/BeamModel.java b/src/main/java/com/atsuishio/superbwarfare/entity/model/BeamModel.java deleted file mode 100644 index cd0a0f38a..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/entity/model/BeamModel.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.atsuishio.superbwarfare.entity.model; - -import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.entity.BeamEntity; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import software.bernie.geckolib.core.animatable.model.CoreGeoBone; -import software.bernie.geckolib.core.animation.AnimationState; -import software.bernie.geckolib.model.GeoModel; - -import static com.atsuishio.superbwarfare.entity.BeamEntity.LENGTH; - -public class BeamModel extends GeoModel { - - @Override - public ResourceLocation getAnimationResource(BeamEntity entity) { - return null; - } - - @Override - public ResourceLocation getModelResource(BeamEntity entity) { - return ModUtils.loc("geo/laser_beam.geo.json"); - } - - @Override - public ResourceLocation getTextureResource(BeamEntity entity) { - return ModUtils.loc("textures/entity/laser_beam.png"); - } - - @Override - public void setCustomAnimations(BeamEntity animatable, long instanceId, AnimationState animationState) { - CoreGeoBone bone = getAnimationProcessor().getBone("bone"); - bone.setScaleX(3); - bone.setScaleY(3); - bone.setScaleZ(2 * (float)(Mth.clamp(animatable.getEntityData().get(LENGTH), 0.1, 512))); -// bone.setHidden(Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON && animatable.getOwner() == Minecraft.getInstance().player); - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index a3230d9a9..c77587719 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -3,7 +3,6 @@ package com.atsuishio.superbwarfare.event; import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.client.ClickHandler; import com.atsuishio.superbwarfare.config.client.DisplayConfig; -import com.atsuishio.superbwarfare.entity.BeamEntity; import com.atsuishio.superbwarfare.entity.DroneEntity; import com.atsuishio.superbwarfare.entity.ICannonEntity; import com.atsuishio.superbwarfare.init.*; @@ -360,10 +359,6 @@ public class ClientEventHandler { return; } - if (lookingEntity instanceof BeamEntity) { - return; - } - boolean canAttack = lookingEntity != player && !(lookingEntity instanceof Player player_ && (player_.isCreative() || player_.isSpectator())) && (!player.isAlliedTo(lookingEntity) || lookingEntity.getTeam() == null || lookingEntity.getTeam().getName().equals("TDM")); diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java b/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java index 2b6ef4cd6..d9bf20a5a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java @@ -30,8 +30,6 @@ public class ModEntities { .sized(0.6f, 2f)); public static final RegistryObject> CLAYMORE = register("claymore", EntityType.Builder.of(ClaymoreEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(512).setUpdateInterval(1).sized(0.5f, 0.5f)); - public static final RegistryObject> BEAM = register("beam", - EntityType.Builder.of(BeamEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(512).setUpdateInterval(1).sized(0.1f, 0.1f)); public static final RegistryObject> MK_42 = register("mk_42", EntityType.Builder.of(Mk42Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(5124).setUpdateInterval(3).setCustomClientFactory(Mk42Entity::new).fireImmune().sized(3.4f, 3.5f)); public static final RegistryObject> MLE_1934 = register("mle_1934", diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java b/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java index a2a2a204b..45fb82e23 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java @@ -14,7 +14,6 @@ public class ModEntityRenderers { event.registerEntityRenderer(ModEntities.MORTAR.get(), MortarRenderer::new); event.registerEntityRenderer(ModEntities.SENPAI.get(), SenpaiRenderer::new); event.registerEntityRenderer(ModEntities.CLAYMORE.get(), ClaymoreRenderer::new); - event.registerEntityRenderer(ModEntities.BEAM.get(), BeamRenderer::new); event.registerEntityRenderer(ModEntities.TASER_BULLET_PROJECTILE.get(), TaserBulletProjectileRenderer::new); event.registerEntityRenderer(ModEntities.GUN_GRENADE.get(), GunGrenadeRenderer::new); event.registerEntityRenderer(ModEntities.TARGET.get(), TargetRenderer::new); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java b/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java index c4569cea3..bc5ea9a3a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/BeamTest.java @@ -1,6 +1,5 @@ package com.atsuishio.superbwarfare.item; -import com.atsuishio.superbwarfare.entity.BeamEntity; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.Entity; @@ -19,10 +18,6 @@ public class BeamTest extends Item { ItemStack stack = player.getItemInHand(hand); if (!stack.getOrCreateTag().getBoolean("Using")) { - if (!level.isClientSide) { - BeamEntity entity = getBeamEntity(level, player); - level.addFreshEntity(entity); - } stack.getOrCreateTag().putBoolean("Using", true); player.getCooldowns().addCooldown(this, 10); } else { @@ -32,16 +27,6 @@ public class BeamTest extends Item { return InteractionResultHolder.consume(stack); } - private static BeamEntity getBeamEntity(Level level, Player player) { - BeamEntity entity = new BeamEntity(player, level); - entity.moveTo(player.getX() + 0.5 * player.getLookAngle().x, - player.getEyeY() - 0.3 + 0.5 * player.getLookAngle().y, - player.getZ() + 0.5 * player.getLookAngle().z, player.getYRot(), 0); - entity.setYBodyRot(player.getYRot()); - entity.setYHeadRot(player.getYRot()); - return entity; - } - @Override public void inventoryTick(ItemStack itemstack, Level world, Entity entity, int slot, boolean selected) { super.inventoryTick(itemstack, world, entity, slot, selected); diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/SeekTool.java b/src/main/java/com/atsuishio/superbwarfare/tools/SeekTool.java index 3051c81ff..a190cdabe 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/SeekTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/SeekTool.java @@ -1,6 +1,5 @@ package com.atsuishio.superbwarfare.tools; -import com.atsuishio.superbwarfare.entity.BeamEntity; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.Level; @@ -15,7 +14,7 @@ public class SeekTool { public static Entity seekEntity(Entity entity, Level level, double seekRange, double seekAngle) { return StreamSupport.stream(EntityFindUtil.getEntities(level).getAll().spliterator(), false) .filter(e -> { - if (e.distanceTo(entity) <= seekRange && calculateAngle(e, entity) < seekAngle && e != entity && !(e instanceof BeamEntity) && e.isAlive()) { + if (e.distanceTo(entity) <= seekRange && calculateAngle(e, entity) < seekAngle && e != entity && e.isAlive()) { return level.clip(new ClipContext(entity.getEyePosition(), e.getEyePosition(), ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, entity)).getType() != HitResult.Type.BLOCK; } diff --git a/src/main/resources/assets/superbwarfare/geo/laser_beam.geo.json b/src/main/resources/assets/superbwarfare/geo/laser_beam.geo.json deleted file mode 100644 index fa41d8f33..000000000 --- a/src/main/resources/assets/superbwarfare/geo/laser_beam.geo.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "format_version": "1.12.0", - "minecraft:geometry": [ - { - "description": { - "identifier": "geometry.laser_beam", - "texture_width": 16, - "texture_height": 16, - "visible_bounds_width": 2, - "visible_bounds_height": 1.5, - "visible_bounds_offset": [0, 0.25, 0] - }, - "bones": [ - { - "name": "bone", - "pivot": [0, 0, 0], - "cubes": [ - { - "origin": [-0.5, -0.5, -16], - "size": [1, 1, 16], - "uv": { - "north": {"uv": [0, 0], "uv_size": [8, 8]}, - "east": {"uv": [0, 0], "uv_size": [8, 8]}, - "south": {"uv": [0, 0], "uv_size": [8, 8]}, - "west": {"uv": [0, 0], "uv_size": [8, 8]}, - "up": {"uv": [8, 8], "uv_size": [-8, -8]}, - "down": {"uv": [8, 8], "uv_size": [-8, -8]} - } - }, - { - "origin": [-0.75, -0.75, -16], - "size": [1.5, 0, 16], - "uv": { - "north": {"uv": [8, 0], "uv_size": [8, 8]}, - "east": {"uv": [8, 0], "uv_size": [8, 8]}, - "south": {"uv": [8, 0], "uv_size": [8, 8]}, - "west": {"uv": [8, 0], "uv_size": [8, 8]}, - "up": {"uv": [16, 8], "uv_size": [-8, -8]}, - "down": {"uv": [16, 8], "uv_size": [-8, -8]} - } - }, - { - "origin": [-1.5005, -0.7495, -16], - "size": [1.5, 0, 16], - "pivot": [-0.375, -0.3745, -8], - "rotation": [0, 0, 90], - "uv": { - "north": {"uv": [8, 0], "uv_size": [8, 8]}, - "east": {"uv": [8, 0], "uv_size": [8, 8]}, - "south": {"uv": [8, 0], "uv_size": [8, 8]}, - "west": {"uv": [8, 0], "uv_size": [8, 8]}, - "up": {"uv": [16, 8], "uv_size": [-8, -8]}, - "down": {"uv": [16, 8], "uv_size": [-8, -8]} - } - }, - { - "origin": [0, 0, -16], - "size": [1.5, 0, 16], - "pivot": [0.375, 0.3755, -8], - "rotation": [0, 0, -180], - "uv": { - "north": {"uv": [8, 0], "uv_size": [8, 8]}, - "east": {"uv": [8, 0], "uv_size": [8, 8]}, - "south": {"uv": [8, 0], "uv_size": [8, 8]}, - "west": {"uv": [8, 0], "uv_size": [8, 8]}, - "up": {"uv": [16, 8], "uv_size": [-8, -8]}, - "down": {"uv": [16, 8], "uv_size": [-8, -8]} - } - }, - { - "origin": [-0.7505, 0.0005, -16], - "size": [1.5, 0, 16], - "pivot": [0.375, 0.3755, -8], - "rotation": [0, 0, -90], - "uv": { - "north": {"uv": [8, 0], "uv_size": [8, 8]}, - "east": {"uv": [8, 0], "uv_size": [8, 8]}, - "south": {"uv": [8, 0], "uv_size": [8, 8]}, - "west": {"uv": [8, 0], "uv_size": [8, 8]}, - "up": {"uv": [16, 8], "uv_size": [-8, -8]}, - "down": {"uv": [16, 8], "uv_size": [-8, -8]} - } - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/textures/entity/laser_beam.png b/src/main/resources/assets/superbwarfare/textures/entity/laser_beam.png deleted file mode 100644 index ec0f3d041..000000000 Binary files a/src/main/resources/assets/superbwarfare/textures/entity/laser_beam.png and /dev/null differ diff --git a/src/main/resources/assets/superbwarfare/textures/entity/laser_beam_e.png b/src/main/resources/assets/superbwarfare/textures/entity/laser_beam_e.png deleted file mode 100644 index 0d122b830..000000000 Binary files a/src/main/resources/assets/superbwarfare/textures/entity/laser_beam_e.png and /dev/null differ